我正在尝试编写一个模糊查询,允许在Elasticsearch中遗漏空格。我将使用它来做一些相当复杂的事情,所以我做了一个简单的测试索引来尝试填充。
Here's the link to the setup for the test index
每个文档的格式如下:
"name": "CAT",
"altnames": [
"CAT",
"HOUSE CAT"
]
到目前为止,我已经编写了一个可以处理拼写错误的altname的查询,例如“软管猫”而不是“家猫”。这是查询:
GET /fuzzyanimals/animal/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"name": {
"query": "HOSE CAT",
"operator" : "and",
"fuzziness": "1"
}
}
},
{
"match": {
"altnames": {
"query": "HOSE CAT",
"operator" : "and",
"fuzziness": "1"
}
}
}
],
"minimum_should_match" : 1
}
}
}
此查询适用于“HOSE CAT”,返回“CAT”文档,但不返回“RAT”或“BAT”。但是,当你给它“HOUSECAT”时,它什么都不返回。我认为这是因为“HOSE CAT”被分成两个字符串(“HOSE”和“CAT”),并且它会搜索在模糊后出现两个字符串的条目。如果是这种情况,如果用户离开该空间,如何搜索“HOUSECAT”?