您会在 Elasticsearch 中实现哪种分析器来搜索书名。
要求必须有模糊性,并且有3个字母的词。
我不打算包括代码,因为我想获得新的见解。 但我遇到的问题是,当我搜索错误的 3 个字母时, 假设我输入“dns”并且有一个包含字段“dna”的文档然后我会得到 善意或在这个词中有 dns 的东西。
最佳答案
我相信要解决您的问题,您可以在模糊查询中使用 fuzziness 字段,这将使您可以设置最大编辑距离,这样当您输入的单词非常小时,长单词将无法匹配。
{
"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
关于elasticsearch - 3 个字母词的模糊性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837596/