我需要对一组单词进行模糊搜索(而不仅仅是单个单词)。
我的数据库表有很多字符串,包含一个或多个单词,我需要找到最适合搜索的单词组。
我搜索 “pommes de terre” ,它应该提供 “pomme de terre” ,并且低分, “pomme” , “terre” ,或任何可能匹配的术语。
对于单个术语,它可以完美地工作,并纠正错字和重大错误。 但是,如果我搜索许多术语,单个术语的分数比完全匹配和词组更好:
是否有一个解决方案可以让更多的术语匹配得分更高?(模糊术语匹配越多,得分越高)
搜索查询:
{query:
{fuzzy_like_this:
{ like_text: 'pomme de terre'}
}
}
设定:
:analysis => {
:analyzer => {
:folding => {
:tokenizer => "icu_tokenizer",
:filter => [ "icu_folding"]
}
}
}
我是初学者,使用elasticsearch-rails。我尝试使用建议查询,但它们不能用于rails gem。
我必须确切地说,这次搜索是我项目的重要组成部分......
答案 0 :(得分:1)
我遇到了同样的问题,并得出结论,模糊查询不是我所需要的。
模糊查询是术语级别的查询。我通过匹配查询获得了更好的结果,由于 fuzziness
参数,您可以对其进行模糊处理。
答案 1 :(得分:0)
我遇到了同样的问题。这是我使用Java-8和ES-1.7修复它的方式。
QueryBuilders.multiMatchQuery("pommes de terre","name")
.fuzziness(3)
.minimumShouldMatch("90%")
.type(Type.MOST_FIELDS);
注意:minimumShouldMatch是解决问题的办法。