term 操作如何查询中文

2015-12-01 16:47:57 +08:00
 itsyarkee
实践中发现 filter term 操作貌似不支持中文查询。举下面这两个例子。
1.查询英文名,可以查到结果:
{'query': {'filtered': {'filter': {'term': {'eng_name': ["zhangshan"]}}, 'query': {'match_all': {}}}}}

2.查询中文名,却查不到:
{'query': {'filtered': {'filter': {'term': {'chn_name': ["张三"]}}, 'query': {'match_all': {}}}}}


可什么办法可以让 term 支持中文查询呢?
5570 次点击
所在节点    Elasticsearch
4 条回复
knightdf
2015-12-01 16:54:27 +08:00
这取决于你用什么做的 index_analyzer
slixurd
2015-12-01 17:07:42 +08:00
1 楼正解
term filter 是过滤被 analyzed 的字段的。
不是简单模糊匹配。
cbsw
2015-12-01 19:46:40 +08:00
sunchen
2015-12-01 20:29:36 +08:00
当你理解一段文本怎么变成倒排索引,就能理解 term 查询是干什么的了。

假如 “当你理解一段文本怎么变成倒排索引,就能理解 term 查询是干什么的了” 这句话被 index_analyzer 分析成 ”当/你/理解/一段/文本/怎么/变成/倒排索引/就/能/理解/ term /查询/是/干什么/的/了“ 之后, 索引里的 term 就会是这些打散的词, 此时你用 term 查询查”变成倒排索引“这个 term 时是查不到任何东西的。 当你用 match 查询查询“变成倒排索引”时, analyzer 会先把查询串切成“变成/倒排索引”,这个时候就能查到东西了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/240333

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX