elasticsearch Elasticsearch结合语言和分析器中的字符过滤器,elasticsearch,lucene,elasticsearch,Lucene" /> elasticsearch Elasticsearch结合语言和分析器中的字符过滤器,elasticsearch,lucene,elasticsearch,Lucene" />

elasticsearch Elasticsearch结合语言和分析器中的字符过滤器

elasticsearch Elasticsearch结合语言和分析器中的字符过滤器,elasticsearch,lucene,elasticsearch,Lucene,我试图将语言分析器与char_过滤器结合起来,但当我查看字段html/xml标记的_termvectors时,我可以看到其中的值,它们是自定义xml标记的属性,如“22anchor_titl” 我的想法是扩展德语过滤器: settings: analysis: analyzer: node_body_analyzer: type: 'german' char_filter: ['html_strip'] mappings: mapp

我试图将语言分析器与char_过滤器结合起来,但当我查看字段html/xml标记的_termvectors时,我可以看到其中的值,它们是自定义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_过滤器从“gernam”派生新分析器的概念根本不可能。如果是这样的话,我是否需要创建一个类型:'custom'分析器,像这样实现整个过程并添加过滤器


干杯是的,你需要这么做。如果您想添加另一个令牌筛选器,该怎么办?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"
    }
  }
}

嘿,谢谢,我也试过了,。。。很糟糕,您无法“扩展”过滤器。在将纯文本提供给语言过滤器之前,我最终剥离了rails中的html,因为char_过滤器似乎并没有将xml的每一部分都提取出来。