您将在Elasticsearch中使用哪种分析器来搜索书名。
要求是必须有模糊性,并且有3个字母的单词。
我不打算包含代码,因为我希望获得新的见解。 但我遇到的问题是,当我搜索3个字母错误时, 说我键入" dns"并且有一个带有字段的文档" dna"然后我会得到 善意或在单词中有dns的东西。
答案 0 :(得分:2)
我相信你可以在模糊查询中使用模糊字段来解决你的问题,这样你就可以设置最大编辑距离,这样当输入是一个非常小的单词时,单词就不会匹配。
{
"fuzzy" : {
"user" : {
"value" : "ki",
"fuzziness" : 2,
"prefix_length" : 1
}
}
}
以上查询将匹配以字母“k”开头的所有3个字母的单词。以及以字母' ki'开头的所有4个字母单词。 2的模糊性意味着允许任何2次编辑,即改变' i'到另一个字母,然后添加另一个字母或添加两个字母,同时保持' ki'。前缀长度告诉elasticsearch在模糊可以接管之前需要完全匹配多少查询。
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html