我目前面临的主要挑战之一是如何匹配长串应用模糊性。
例如,我们说我们有以下文件:
PUT my_index/type/2
{
"name":"longnameyesverylong"
}
如果我对该名称应用模糊搜索,如下所示:
"match": {
"name": {
"query": "longnameyesverylong",
"fuzziness": 2
}
我可以找到它,但我的目标是能够打开网络,并为这种类型的字符串提供两个以上的错误。
让我们举例来说,我的索引如下:
PUT my_index/type/2
{
"name":"l1ngnam2yesver3long"
}
上一个匹配查询无法找到此文档,因为模糊度大于2且ES不支持。
我尝试使用ngrams,但令牌也不符合要求,索引也会增长太多。
我唯一能做的就是在索引时手动分割字符串,创建我自己的标记器"并创建一个看起来像
的文档 PUT my_index/type/2
{
"name":"longnamey esverylong"
}
然后,在搜索时,再次拆分字符串并对每个标记应用具有模糊性的布尔查询。这可能会做我需要的,但我觉得这个问题可能有更好的解决方案。
您认为其他方法是否合适?
谢谢。
答案 0 :(得分:0)
问题解决了。这个问题的关键是pattern_capture过滤器。