我需要它,以便其中带有句点的单词等于非句点变体。

我看到文档中有一个关于分析器和 token 过滤器的部分,但是我发现它很简洁,不确定如何去做。

最佳答案

使用char filter消除点,例如:

PUT /no_dots
{
  "settings": {
    "analysis": {
      "char_filter": {
        "my_mapping": {
          "type": "mapping",
          "mappings": [
            ".=>"
          ]
        }
      },
      "analyzer": {
        "my_no_dots_analyzer": {
          "tokenizer": "standard",
          "char_filter": [
            "my_mapping"
          ]
        }
      }
    }
  },
  "mappings": {
    "test": {
      "properties": {
        "text": {
          "type": "string",
          "analyzer": "my_no_dots_analyzer"
        }
      }
    }
  }
}

并测试GET /no_dots/_analyze?analyzer=my_no_dots_analyzer&text=J.J Abrams返回:
{
   "tokens": [
      {
         "token": "JJ",
         "start_offset": 0,
         "end_offset": 3,
         "type": "<ALPHANUM>",
         "position": 1
      },
      {
         "token": "Abrams",
         "start_offset": 4,
         "end_offset": 10,
         "type": "<ALPHANUM>",
         "position": 2
      }
   ]
}

关于elasticsearch - 如何规范 Elasticsearch 查询中的周期(例如JJ Abrams == J.J Abrams)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28243831/

10-16 19:49