Python Elasticsearch低ngram导致额外的不相关结果
在这个Elasticsearch机器上,我有一个最小尺寸为3的ngram过滤器Python Elasticsearch低ngram导致额外的不相关结果,python,
elasticsearch,n-gram,Python,
elasticsearch,N Gram,在这个Elasticsearch机器上,我有一个最小尺寸为3的ngram过滤器 'my_ngram': { 'type': 'nGram', 'max_gram': 50, 'min_gram': 3 }, 这对于搜索像“点心”这样的东西非常有用,在那里我会得到与点心有关的东西 然而,当我搜索“steak”时,由于ngram很低,我会得到包含“steam”和“steal”的结果 在将ngram最小值提高到5并重新编制索引后,修复了“牛排”返回其他结果的问题,但现在搜索“
'my_ngram': {
'type': 'nGram',
'max_gram': 50,
'min_gram': 3
},
这对于搜索像“点心”这样的东西非常有用,在那里我会得到与点心有关的东西
然而,当我搜索“steak”时,由于ngram很低,我会得到包含“steam”和“steal”的结果
在将ngram最小值提高到5并重新编制索引后,修复了“牛排”返回其他结果的问题,但现在搜索“点心”时什么也不返回
搜索是从python 2.7运行的
search = Search(doc_type=('post',), index='sitename')
search = search.query('multi_match', query='dimsum', fields=['title^2', 'content'], operator='and')
response = search.execute()
有谁能告诉我如何调整这一点,使搜索更“切中要害”?我不知道还有什么其他信息与此相关,但如果需要,我会分享更多信息。在搜索过程中尽量不要使用nGram分析器,而只能在索引时使用。在映射中,您需要为
标题
和内容
字段指定“搜索分析器”:“标准”
,以便覆盖索引时启动的nGram
分析器。您能试一下吗?我没有。有一个时间点,我们需要一个自动完成功能,这是完美的。在这一点上,移除ngram l为我们解决了问题。我相信我们的解决方案,如果我们把它带回来的话,就是只有两个索引,一个有ngram,一个没有ngram。我很可能会删除这个问题,因为我不知道我是否会抽出时间来测试我们的建议。谢谢你的帮助,我很感激。请随时解释你的实际用例,我相信我们会找到一个比复制索引更好的解决方案。在搜索过程中尽量不要使用nGram分析器,但只能在索引时使用。在映射中,您需要为标题
和内容
字段指定“搜索分析器”:“标准”
,以便覆盖索引时启动的nGram
分析器。您能试一下吗?我没有。有一个时间点,我们需要一个自动完成功能,这是完美的。在这一点上,移除ngram l为我们解决了问题。我相信我们的解决方案,如果我们把它带回来的话,就是只有两个索引,一个有ngram,一个没有ngram。我很可能会删除这个问题,因为我不知道我是否会抽出时间来测试我们的建议。谢谢你的帮助,我很感激。请随时解释你的实际用例,我相信我们会找到一个比复制索引更好的解决方案。