处理人类语言 开始处理各种语言词汇识别归一化词元将单词还原为词根停用词: 性能与精度同义词拼写错误 模糊性模糊查询模糊匹配查询模糊性评分语音匹配
模糊匹配查询
match
查询支持开箱即用的模糊匹配:
GET /my_index/my_type/_search{"query": {"match": {"text": {"query":"SURPRIZE ME!","fuzziness": "AUTO","operator": "and"}}}}
查询字符串首先进行分析,会产生词项[surprize, me]
,并且每个词项根据指定的fuzziness
进行模糊化。
同样,multi_match
查询也支持fuzziness
,但只有当执行查询时类型是best_fields
或者most_fields
:
GET /my_index/my_type/_search{"query": {"multi_match": {"fields": [ "text", "title" ],"query":"SURPRIZE ME!","fuzziness": "AUTO"}}}
通配符查询
返回包含匹配通配符模式的术语的文档。
通配符运算符是匹配一个或多个字符的占位符。例如,*
通配符运算符匹配零个或多个字符。您可以将通配符运算符与其他字符组合以创建通配符模式。
示例请求
以下搜索返回user.id
字段包含以 开头ki
和结尾的术语的文档y
。这些匹配条件可以包括kiy
,kity
或kimchy
。
GET /_search{"query": {"wildcard": {"user.id": {"value": "ki*y","boost": 1.0,"rewrite": "constant_score"}}}}
的顶级参数wildcard
<field>
(必需,对象)要搜索的字段。
参数<field>
value
(必需,字符串)您希望在提供的<field>
.
此参数支持两个通配符运算符:
?
, 匹配任何单个字符*
, 可以匹配零个或多个字符,包括空字符
避免以*
或开始模式?
。这会增加查找匹配项所需的迭代次数并降低搜索性能。
boost
(可选,浮点数)用于减少或增加查询相关性分数的浮点数。默认为1.0
.
您可以使用该boost
参数来调整包含两个或更多查询的搜索的相关性分数。
Boost 值相对于 的默认值1.0
。0
和之间的提升值会1.0
降低相关性分数。大于 的值会1.0
增加相关性分数。
rewrite
(可选,字符串)用于重写查询的方法。有关有效值和更多信息,请参阅rewrite
参数。
case_insensitive
[7.10.0]在 7.10.0 中添加。
(可选,布尔值)设置为 true 时,允许模式与索引字段值不区分大小写匹配。默认为 false,这意味着匹配的区分大小写取决于基础字段的映射。
笔记
允许昂贵的查询
如果search.allow_expensive_queries
设置为 false,则不会执行通配符查询。
原文