我需要对一组单词进行模糊搜索(而不仅仅是单个术语).
我的数据库表有很多字符串,包含一个或多个单词,我需要找到最适合搜索的单词组.
我搜索"pommes de terre",它应该给出"pomme de terre",并且得分较低,"pomme","terre"或任何可能匹配的术语.
对于单个术语,它可以完美地工作,并纠正错字和重大错误.但是,如果我搜索多个术语,单个术语的分数要比完全匹配的分数和单词组要好:
有没有一个解决方案可以让更多的术语匹配更好的分数?(模糊术语匹配越多,分数越高)
搜索查询:
{query:
{fuzzy_like_this:
{ like_text: 'pomme de terre'}
}
}
Run Code Online (Sandbox Code Playgroud)
设置:
:analysis => {
:analyzer => {
:folding => {
:tokenizer => "icu_tokenizer",
:filter => [ "icu_folding"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是初学者,使用elasticsearch-rails.我尝试使用建议查询,但它们不能用于rails gem.
我必须确切地说,这次搜索是我项目的重要组成部分......
小智 3
我遇到了同样的问题。以下是我使用 Java-8 和 ES-1.7 修复它的方法。
QueryBuilders.multiMatchQuery("pommes de terre","name")
.fuzziness(3)
.minimumShouldMatch("90%")
.type(Type.MOST_FIELDS);
Run Code Online (Sandbox Code Playgroud)
注意:minimumShouldMatch 就是这里的技巧。
| 归档时间: |
|
| 查看次数: |
748 次 |
| 最近记录: |