【问题标题】:Elasticsearch combining language and char_filter in an analyzerElasticsearch 在分析器中结合语言和 char_filter
【发布时间】:2016-04-16 05:11:15
【问题描述】:

我正在尝试将语言分析器与 char_filter 结合起来,但是当我查看 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_filter 从“gernam”派生新分析器的概念根本不可能。如果是这样,我是否必须制作一个 type: 'custom' 分析器,像 documentation 这样实现整个事情并添加过滤器?

干杯

【问题讨论】:

    标签: elasticsearch lucene


    【解决方案1】:

    是的,您需要这样做。如果您想添加另一个令牌过滤器怎么办? 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_filter 似乎并没有得到每一个 xml。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2011-07-19
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多