在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

怎么让同义词不分词

Elasticsearch | 作者 wrq42 | 发布于2019年01月28日 | 阅读数:2096

使用ES6.3.0,同义词字典里配了:   葡萄干,青葡萄干
搜索葡萄干,理论上希望出的结果是葡萄干和青葡萄干两个词,但实际上青葡萄干也被分成了青和葡萄干两个词(如下图),如何让青葡萄干不分词呢(相同的配置在ES1.5不会出现这种情况,青和葡萄干不会分开,用的词库完全一样)

企业微信截图_15486718668774.png

 分词和同义词是这么配置的:
analysis": {
"filter": {
"sysfilter": {
"type": "synonym",
"synonyms_path": "synonym.dic"
},
"stopword": {
"type": "stop",
"stopwords_path": "stopwords.dic"
}
},
"analyzer": {
"customer_ansj_query": {
"filter": [
"sysfilter"
,
"stopword"
],
"tokenizer": "query_ansj_token"
},
"customer_ansj_index": {
"tokenizer": "index_ansj_token"
}
},
"tokenizer": {
"index_ansj_token": {
"type": "index_ansj",
"is_name": "false"
},
"query_ansj_token": {
"type": "query_ansj",
"is_name": "false"
}
}
已邀请:

寻z - elk

赞同来自:

加个新词就好了,你这个es是什么版本的?

danvid

赞同来自:

我也遇到这样的问题~我看文档说得是默认好像会经过whitespace但是我配置了keyword也不行~你解决了吗还有一个ignore_case参数也不起作用~ 

yeziblo

赞同来自:

ES 7.9.0遇到同样的问题,按道理说token-filter阶段只会对tokenizer阶段切出来的词进行过滤转换,可为什么同义词不但转换,而且又切了一次呢?
 
加上自定义词库确实可以解决,但总感觉这个逻辑很奇怪。
 
请问楼主解决了么?

要回复问题请先登录注册