elasticsearch - minimum_should_match + 短语查询

Yeh*_*sef 6 elasticsearch

是否可以在短语查询中使用 minimum_should_match?例如,“quick brown dog”可以匹配"I have a quick dog"并且得分高于"dogs run around but the cat is quick"假设足够高的斜率和“2”的最小匹配。

我找不到任何这方面的例子。如果短语匹配不能做到这一点,还有其他方法可以做到这一点吗?

Yeh*_*sef 1

我看到这个问题得到了赞成,所以我将发布我的解决方法。我将短语“quickbrowndog”(#1)分成三个新短语“quickbrown”(#2)“quickdog”(#3)和“browndog”(#4),并应用这三个短语与原始内容一起作为 bool 查询的一部分(每个都是一个“应该”子句”)。

我给出的第一个示例文档I have a quick dog仅匹配 #3,第二个文档不会匹配其中任何一个。因此第一个文档将匹配,这就是我所追求的。

在这个例子中,我想要的最小单词匹配为 2 - 如果您需要更多,您将创建更大的带状疱疹。

仅供参考 - 我认为这也可能在搜索中使用 shingle 令牌过滤器( https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-shingle-tokenfilter.html )。有关更多信息,请参阅弹性搜索 - search_analyzer 与 index_analyzer。我没有尝试过这个,我不确定它是否适用于短语“querys”和“slop” - 但如果适用的话那就太好了。