在同一索引中使用不同的词干分析器

时间:2013-02-10 21:45:07

标签: elasticsearch lexical-analysis

我正在构建一个字典,并希望使用elasticsearch作为搜索引擎。它应该支持多种语言,因此我的数据库看起来类似于:

| left_lang | right_lang | left_word | right_word |
| de        | en         | Schuh     | shoe       |
| da        | de         | sko       | Schuh      |

在哪个级别可以定义不同的分析器设置(如词干分析器等)?我可以为文档的每个字段设置不同的设置吗?例如。在第一个文档中,对left_word使用德语设置,对right_words使用英语,在第二个文档中,对于left_words使用丹麦语,对于right_words使用德语?或者我可以在类型或索引级别定义这些吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以按字段定义这些设置。您甚至可以使用“Multi-field”映射定义使用多种语言设置分析的字段。

{
  "settings":{
     "index":{
        "analysis":{
           "analyzer":{
              "analyzer_english":{
                 "tokenizer":[...],
                 "filter":[...]
              },
              "analyzer_german":{
                 "tokenizer":[...],
                 "filter":[...]
              }
           }
        }
     }
  },
  "mappings":{
     "test":{
        "properties":{
           "left_word":{
              "analyzer":"analyzer_german",
              "type":"string"
           },
           "right_word":{
              "analyzer":"analyzer_english",
              "type":"string"
           },
           "combo_word":{
              "type":"multi_field",
              "fields":{
                 "combo_word":{
                    "analyzer":"analyzer_german",
                    "type":"string"
                 },
                 "combo_english":{
                    "analyzer":"analyzer_english",
                    "type":"string"
                 }
              }
           }
        }
     }
  }
}