elasticsearch,lucene,lexical-analysis,synonym,Indexing,elasticsearch,Lucene,Lexical Analysis,Synonym" /> elasticsearch,lucene,lexical-analysis,synonym,Indexing,elasticsearch,Lucene,Lexical Analysis,Synonym" />

Indexing Elasticsearch:在我的英语分析器上添加同义词过滤器

Indexing Elasticsearch:在我的英语分析器上添加同义词过滤器,indexing,elasticsearch,lucene,lexical-analysis,synonym,Indexing,elasticsearch,Lucene,Lexical Analysis,Synonym,我有一个带有字段描述的索引,分析如下: "description":{ "analyzer" : "english", "type" : "string" } 我在一个文件synonyms.txt中定义了同义词词典,该文件包含: ipod, i-pod, i pod => i-pod 我想把这个同义词dictionnary添加到我的分析器中,但我不知道怎么做。我应该定义一个自定义分析器吗?但是如果我这样做,我会因为这种定制而偏离我当前的指数化。指数是的,你应该定

我有一个带有字段描述的索引,分析如下:

"description":{
      "analyzer" : "english",
      "type" : "string"
}
我在一个文件synonyms.txt中定义了同义词词典,该文件包含:

ipod, i-pod, i pod => i-pod

我想把这个同义词dictionnary添加到我的分析器中,但我不知道怎么做。我应该定义一个自定义分析器吗?但是如果我这样做,我会因为这种定制而偏离我当前的指数化。指数是的,你应该定义一个自定义分析器。您可以从开始,然后将同义词过滤器添加到:

{
  "settings": {
    "analysis": {
      "filter": {
        "english_stop": {
          "type":       "stop",
          "stopwords":  "_english_" 
        },
        "english_keywords": {
          "type":       "keyword_marker",
          "keywords":   [] 
        },
        "english_stemmer": {
          "type":       "stemmer",
          "language":   "english"
        },
        "english_possessive_stemmer": {
          "type":       "stemmer",
          "language":   "possessive_english"
        },
        "my_synonyms" : {
          "type" : "synonym",
          "synonyms_path" : "path/to/synonym.txt"
        }
      },
      "analyzer": {
        "custom_english": {
          "tokenizer":  "standard",
          "filter": [
            "english_possessive_stemmer",
            "lowercase",
            "my_synonyms",
            "english_stop",
            "english_keywords",
            "english_stemmer"
          ]
        }
      }
    }
  }
}
至于是否会出现分歧,是的。如果将同义词用作索引时间,则新索引的数据将应用同义词筛选器,而现有数据将不应用。如果希望对索引时间分析的更改一致地应用,则需要对数据重新编制索引

如果对分析的更改只在您的应用程序中进行,则无需重新编制索引