Elasticsearch autosuggest

时间:2016-03-23 13:32:09

标签: elasticsearch autosuggest

ES的新手需要帮助建议者.... 我制作了一个简单的索引,其中有一些标题,如“制造商产品名称mpn”:

我目前的映射:

'suggest'=> [
'=> 'completion'
'=> 'simple'
' => false
]

我目前的查询:

'body' => [
'suggest' => [
'text' => $this->query
, 'completion' => [
'field' => 'suggest'
]]]

现在,如果我尝试建议它有效,但结果非常难看...... 也许有人可以帮我找到合适的设置:

e.g。标题是:“Xoar Electric Beechwood Precision”

现在我想要查询的结果:

"X" => "Xoar"
"Yoar E" => "Xoar", "Xoar Electric"
"El" => "Electric"
"Elektric " => "Electric", "Electric Beechwood"

目前,如果我输入“X ....”,它只会返回完整的标题。

这可能吗? 如果是的话,我怎样才能得到这个结果?

提前感谢!

2 个答案:

答案 0 :(得分:0)

您需要更改默认标记生成器和分析器以从elasticsearch获取相关文档。

查看以下链接,了解有关如何处理人类语言和拼写错误更正的详细信息,

Human Languages with elasticsearch

Fuzzy matching with elasticsearch

答案 1 :(得分:0)

你应该使用ngrams方法,即通过将它们与空格字符分开或最适合你的用例来标记你的单词。然后使用建议分析器索引每个标记。

例如:

拆分“Xoar Electric Beechwood Precision”就像这样

  • “Xoar Electric Beechwood Precision”
  • “Electric Beechwood Precision”
  • “Beechwood Precision”
  • “精密”

然后使用prefix查询。对于自动更正,您可以使用fuzziness参数。

希望这有帮助。