关于撇号的 Elasticsearch 查询

Elasticsearch query on apostrophes

我在 elasticsearch 上查询,查询是 apples。在我们的索引数据中,文本呈现为 apple's。如果我像 apples 这样搜索,我没有得到任何结果。如果我搜索 apple's,我们会得到结果。但在我看来,如果我使用 apples 进行搜索,我也需要 apple's 查询的相同结果。有什么办法可以处理这类案件。

感觉你需要一个模糊搜索,如果我没说错的话。请查看这篇文章:https://www.elastic.co/blog/found-fuzzy-search 如果这不是您要找的内容,请告诉我们。

您可以通过以下方式设置 char_filter 来执行此操作:

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": [
            "my_char_filter"
          ]
        }
    },
    "char_filter": {
      "my_char_filter": {
        "type": "mapping",
        "mappings": [
          "' => "
        ]
       }
      } 
    }
  }
}


POST my_index/_analyze
{
 "analyzer": "my_analyzer",
 "text": "apple's"
}

这将导致:

{
  "tokens": [
  {
    "token": "apples",
    "start_offset": 0,
    "end_offset": 7,
    "type": "word",
    "position": 0
  }
 ]
}

您正在从索引中删除撇号,您可以成功搜索 applesapple's