Elasticsearch - 当搜索关键字没有空格时如何模糊匹配短语?
Elasticsearch - how to fuzzy match phrase when search keyword has no spaces?
我想通过搜索关键字 brownfox
.
来匹配字段 title
值为 brown fox
的文档
尝试此 fuzzy
查询时,我没有得到任何结果:
curl -XGET 'http://localhost:9200/haystack/_search?pretty' -d '{
"query" : {
"fuzzy" : {
"title": {
"value": "brownfox",
"fuzziness": 2,
"prefix_length": 0,
"max_expansions": 10000
}
}
}
}'
我还尝试了 match
模糊查询和运算符 and
:
curl -XGET 'http://localhost:9200/haystack/_search?pretty' -d '{
"query": {
"match": {
"title": {
"query": "brownfox",
"fuzziness": "AUTO",
"operator": "and"
}
}
}
}'
此 returns 结果具有相似的关键字,但不是标题为 brown fox
的文档,我认为它更匹配。
我也阅读了 SO 问题的答案,但我没有选择用同义词更新字段的分析器,因为我也想匹配其他类似的情况,包括两个都丢失空格和 mis-spelled 个单词。
谢谢!
title
字段的映射至少应该有一个分析器将 "brown fox"
保持为单个术语。如果它使用 standard
分析器或任何不保持 brown fox
作为一个整体的东西,你将无法匹配它。
我想通过搜索关键字 brownfox
.
title
值为 brown fox
的文档
尝试此 fuzzy
查询时,我没有得到任何结果:
curl -XGET 'http://localhost:9200/haystack/_search?pretty' -d '{
"query" : {
"fuzzy" : {
"title": {
"value": "brownfox",
"fuzziness": 2,
"prefix_length": 0,
"max_expansions": 10000
}
}
}
}'
我还尝试了 match
模糊查询和运算符 and
:
curl -XGET 'http://localhost:9200/haystack/_search?pretty' -d '{
"query": {
"match": {
"title": {
"query": "brownfox",
"fuzziness": "AUTO",
"operator": "and"
}
}
}
}'
此 returns 结果具有相似的关键字,但不是标题为 brown fox
的文档,我认为它更匹配。
我也阅读了
谢谢!
title
字段的映射至少应该有一个分析器将 "brown fox"
保持为单个术语。如果它使用 standard
分析器或任何不保持 brown fox
作为一个整体的东西,你将无法匹配它。