我尝试使用弹性搜索对字符串进行模糊查询。根据此链接(https://www.elastic.co/guide/en/elasticsearch/reference/1.6/common-options.html#fuzziness),允许的最大模糊度为2,因此查询将仅使用Levenshtein编辑距离返回2次编辑的结果。该网站称模糊类此查询支持模糊搜索,模糊度大于2,但到目前为止使用模糊类似查询只允许我在搜索的两次编辑中搜索结果。这种约束是否有解决方法?
答案 0 :(得分:1)
看起来这是一段fixed的错误。您使用的是哪个Elasticsearch版本?
对于上下文,对于大多数模糊操作,编辑距离现在限于[0,1,2]的原因与a massive performance improvement of fuzzy/wildcard/regexp matching in Lucene 4 using Finite State Transducers有关。
通过FST执行模糊查询需要在构造传感器时(在索引时)知道所需的编辑距离。这可能限制在编辑距离2,以保持FST大小要求可管理。 但也可能,因为对于许多应用程序,编辑距离大于2会引入大量噪音。
之前的模糊查询实现需要访问每个文档以在查询时计算编辑距离,对于大型集合来说是不切实际的。
听起来Elasticsearch(1.x)仍在使用FuzzyLikeThisQuery的原始(非高性能)实现,这就是为什么编辑距离可以增加到2以上。但是,FuzzyLikeThis已经被弃用了1.6和{ {3}}