2015-10-13 71 views
2

我调查的可能性从SphinxSearch切换到ElasticSearchElasticSearch:全文搜索变得容易

SphinxSearch有什么好处 - 全文搜索只是在机器人的相当好的水平上工作。让它在ElasticSearch上工作并不像我想象的那么容易。

在我的项目中,我有一个typeahead搜索框,意思是stype Clint E,并看到下拉结果包括Clint Eastwood在第一位。请输入robert down,首先请参阅Robert Downey Jr.。所有这些我用SphinxSearch开箱即可实现,只需提供我的数据库凭据和SQL查询即可提取必要的字段。

在另一方面,ElasticSearch我甚至不能阅读约Fuzzy Like This Querymatchingpartial matching等了一天后,得到满意的结果。许多信息,但它不会让任务更容易。我觉得我需要成为博士才能在最简单的层面上工作。

到目前为止,我结束了这样的配置

{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "stem": { 
        "tokenizer": "standard", 
        "filter": [ 
         "standard", 
         "lowercase", 
         "stop", 
         "porter_stem" 
        ] 
       } 
      } 
     } 
    }, 
    "mappings": { 
     "movies": { 
      "dynamic": true, 
      "properties": { 
       "title": { 
        "type": "string", 
        "analyzer": "stem" 
       } 
      } 
     } 
    } 
} 

查询是这样的:

{ 
    "query": { 
     "query_string": { 
      "query": "clint eastw" 
      "default_field": "title" 
     } 
    } 
} 

但在这种情况下,搜索的质量不令人满意时在所有 - 回到我的例子,它不能找到Clint Eastwood配置文件,直到我完全键入他的名字。

然后我试图使用

{ 
    "query": { 
     "fuzzy_like_this": { 
      "fields": [ 
       "title" 
      ], 
      "like_text": "clint eastw", 
      "max_query_terms": 25, 
      "fuzziness": 0.5 
     } 
    } 
} 

它可以帮助,但不是很多,现在我能找到我所需要用较短的要求clint eastwo和一些操作与clint eastw但仍不容乐观参数之后。

所以我想知道,是否有一个简单的食谱如何烹饪与ElasticSearch全文搜索并获得体面的质量的结果。我花了一天的时间阅读,但没有找到解决方案。

夫妇图片来演示一下我所说的:

弹性,名字几乎完全,但没有预期的结果,请注意,有没有更好的比赛也是如此。后

Search 1

一封信,弹性找到了!

Search 2

在同一时刻闪耀着狮身人面像:)

Search 3

回答

0

Elasticsearch附带自动completion suggester。 你不需要把它放到查询功能中,它的工作方式是在令牌级而不是部分令牌级。 去完成建议,它也支持模糊逻辑。

+0

感谢您的回答。我只是尝试了一下,它效果更好,当我为Clint Eastwood输入'Clint E'但却没有快乐时,它会产生结果,例如,当我输入'Eastwood Clint'时找不到那个人......并且再一次,狮身人面像完成这项工作。 – SmxCde

+0

它看起来像'ElasticSearch'需要太多的努力,使其实际工作。可能它更有能力,但绝对不是快速启动:( – SmxCde