模糊查询
编辑模糊查询编辑
返回包含与搜索词语相似的词语的文档,相似度由 莱文斯坦编辑距离 衡量。
编辑距离是指将一个词语转换为另一个词语所需的单字符更改次数。这些更改可能包括
- 更改字符 (box → fox)
- 删除字符 (black → lack)
- 插入字符 (sic → sick)
- 交换两个相邻字符 (act → cat)
为了找到相似的词语,fuzzy
查询会在指定编辑距离内创建搜索词语的所有可能变体或扩展。然后,查询会返回每个扩展的精确匹配项。
示例请求编辑
简单示例编辑
response = client.search( body: { query: { fuzzy: { 'user.id' => { value: 'ki' } } } } ) puts response
GET /_search { "query": { "fuzzy": { "user.id": { "value": "ki" } } } }
使用高级参数的示例编辑
response = client.search( body: { query: { fuzzy: { 'user.id' => { value: 'ki', fuzziness: 'AUTO', max_expansions: 50, prefix_length: 0, transpositions: true, rewrite: 'constant_score_blended' } } } } ) puts response
GET /_search { "query": { "fuzzy": { "user.id": { "value": "ki", "fuzziness": "AUTO", "max_expansions": 50, "prefix_length": 0, "transpositions": true, "rewrite": "constant_score_blended" } } } }
fuzzy
的顶级参数编辑
-
<field>
- (必需,对象) 您要搜索的字段。
<field>
的参数编辑
-
value
- (必需,字符串) 您希望在提供的
<field>
中找到的词语。 -
fuzziness
- (可选,字符串) 允许的匹配最大编辑距离。有关有效值和更多信息,请参见 模糊度。
-
max_expansions
-
(可选,整数) 创建的最大变体数量。默认为
50
。避免在
max_expansions
参数中使用高值,尤其是在prefix_length
参数值为0
的情况下。由于检查的变体数量过多,max_expansions
参数中的高值会导致性能下降。 -
prefix_length
- (可选,整数) 创建扩展时保持不变的开头字符数量。默认为
0
。 -
transpositions
- (可选,布尔值) 指示编辑是否包含两个相邻字符的交换 (ab → ba)。默认为
true
。 -
rewrite
- (可选,字符串) 用于重写查询的方法。有关有效值和更多信息,请参见
rewrite
参数。
备注编辑
如果 search.allow_expensive_queries
设置为 false,则不会执行模糊查询。