elasticsearch Elasticsearch结合语言和分析器中的字符过滤器
我试图将语言分析器与char_过滤器结合起来,但当我查看字段html/xml标记的_termvectors时,我可以看到其中的值,它们是自定义xml标记的属性,如“22anchor_titl” 我的想法是扩展德语过滤器: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
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的每一部分都提取出来。