2016-04-15 18 views
1

我想將語言分析器與char_filter結合起來,但是當我查看字段的_termvectors html/xml標記時,我可以看到那些屬性爲自定義xml的值標籤,如「22anchor_titl」。Elasticsearch在分析器中結合語言和char_filter

我的想法是延長德國語言過濾器:

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並添加過濾器?

乾杯

回答

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" 
    } 
    } 
} 
+0

嘿,謝謝這就是我也試過,...對你不能「擴大」過濾器。由於char_filter似乎並沒有將每一個xml都取出,我最終在將純文本提供給語言過濾器之前最終在rails中剝離了html。 – Tom