搜索为你的类型和上下文建议有什么区别?

时间:2017-02-09 03:52:17

标签: elasticsearch

我想实现“搜索输入”类型(即搜索输入中的自动提示),似乎至少有两个文档页面采用不同的方法来执行此操作:

https://www.elastic.co/guide/en/elasticsearch/guide/2.x/_index_time_search_as_you_type.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/suggester-context.html

我是否正确,通过建议,我手动提供建议索引的记录,而在搜索为你的类型,我正在使用现有的索引数据?为什么我会选择一个而不是另一个?

1 个答案:

答案 0 :(得分:5)

目前Elasticsearch中有4种类型的建议:

  • Term suggester。然后根据编辑距离提供“类似”术语。它根据索引中的数据提供建议,有很多旋钮可以调整它。
  • Phrase suggester。它与建议者所做的一词非常相似,但考虑到整个短语。
  • Completion suggester或搜索即用型功能。如果前两个基于索引中的实际条款,执行类似表示功能或拼写检查的操作。当用户输入时,这个应该“显示”你的5或10个相关文档,对于这个,你需要手动索引建议类型的字段,后面的ES将进行快速查找。
  • Context suggester。这是完成建议器的延续,其中包含用户来自某个上下文(geo)的概念,或者引擎是否希望将某个公司推向另一个公司,只是因为他们为此付费,或类似的事情。在这种情况下,需要手动索引其他数据。

关于你的问题:在两种情况下,你需要索引某些内容(Elasticsearch中没有魔法),但前两个建议者更多的是你的意思是更正,拼写检查更正,而后两个需要额外的索引。前两个只是普通的数据结构,您可以将它们用于普通搜索或这些建议,而最后两个构建为超快,它们使用能够快速查找的数据结构,但是昂贵构建并存储在内存中

所以,你的选择应该来自你的用例,永远不要忘记你在这两种情况下的开销。