小编raf*_*ron的帖子

同义词过滤器的不同位置增量行为

edge_ngrams我的用例是在支持下搜索synonym要匹配的令牌应按顺序排列的位置。

在尝试分析时,我观察到过滤器链在位置增量方面有两种不同的行为。

  1. 使用过滤器链,因为lowercase, synonym没有位置增量SynonymFilter
  2. 使用过滤器链,因为lowercase, edge_ngram, synonym存在位置增量SynonymFilter

以下是我针对每种情况运行的查询:

情况1.无位置增量

PUT synonym_test
{
  "index": {
    "analysis": {
      "analyzer": {
        "by_smart": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "custom_synonym"
          ]
        }
      },
      "filter": {
        "custom_synonym": {
          "type": "synonym",
          "synonyms": [
            "begin => start"
          ]
        }
      }
    }
  }
}


GET synonym_test/_analyze
{
  "text": "begin working",
  "analyzer": "by_smart"
}

Run Code Online (Sandbox Code Playgroud)

输出:

{
  "tokens": [
    {
      "token": "start",
      "start_offset": 0,
      "end_offset": 5,
      "type": "SYNONYM",
      "position": …
Run Code Online (Sandbox Code Playgroud)

lucene search elasticsearch

5
推荐指数
0
解决办法
463
查看次数

标签 统计

elasticsearch ×1

lucene ×1

search ×1