省略空格的模糊搜索?

时间:2017-06-28 16:35:29

标签: elasticsearch fuzzy-search

我正在尝试编写一个模糊查询,允许在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”?

0 个答案:

没有答案