Elasticsearch在分析器中结合语言和char_filter

时间:2016-04-15 14:44:53

标签: elasticsearch lucene

我正在尝试将语言分析器与char_filter结合使用,但是当我查看字段的_termvectors时,我可以看到html / xml标签中的值是自定义xml标签的属性,如“22anchor_titl”。

我的想法是扩展德语过滤器:

settings: 
  analysis:
    analyzer:
      node_body_analyzer:
        type: 'german'
        char_filter: ['html_strip']

mappings:
  mappings:
    node:
      body:
      type: 'string'
      analyzer: 'node_body_analyzer'
      search_analyzer: 'node_search_analyzer'

我的配置是否有错误,或者是通过添加char_filter从'gernam'派生新分析器的概念根本不可能。如果是这样,我是否必须制作一个类型:'自定义'分析器,实现像documentation这样的整个过程并添加过滤器?

干杯

1 个答案:

答案 0 :(得分:2)

是的,你需要这样做。如果您想添加另一个令牌过滤器怎么办?哪个ES应该把那个放在已存在的令牌过滤器列表中(因为顺序很重要)?你需要这样的东西:

"analysis": {
  "filter": {
    "german_stop": {
      "type":       "stop",
      "stopwords":  "_german_" 
    },
    "german_keywords": {
      "type":       "keyword_marker",
      "keywords":   ["ghj"] 
    },
    "german_stemmer": {
      "type":       "stemmer",
      "language":   "light_german"
    }
  },
  "analyzer": {
    "my_analyzer": {
      "type":"custom",
      "tokenizer":  "standard",
      "filter": [
        "lowercase",
        "german_stop",
        "german_keywords",
        "german_normalization",
        "german_stemmer"
      ],
      "char_filter":"html_strip"
    }
  }
}