V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
itsyarkee
V2EX  ›  Elasticsearch

term 操作如何查询中文

  •  
  •   itsyarkee · 2015-12-01 16:47:57 +08:00 · 5376 次点击
    这是一个创建于 3062 天前的主题,其中的信息可能已经有所发展或是发生改变。
    实践中发现 filter term 操作貌似不支持中文查询。举下面这两个例子。
    1.查询英文名,可以查到结果:
    {'query': {'filtered': {'filter': {'term': {'eng_name': ["zhangshan"]}}, 'query': {'match_all': {}}}}}

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


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

    假如 “当你理解一段文本怎么变成倒排索引,就能理解 term 查询是干什么的了” 这句话被 index_analyzer 分析成 ”当/你/理解/一段/文本/怎么/变成/倒排索引/就/能/理解/ term /查询/是/干什么/的/了“ 之后, 索引里的 term 就会是这些打散的词, 此时你用 term 查询查”变成倒排索引“这个 term 时是查不到任何东西的。 当你用 match 查询查询“变成倒排索引”时, analyzer 会先把查询串切成“变成/倒排索引”,这个时候就能查到东西了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1018 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:58 · PVG 06:58 · LAX 15:58 · JFK 18:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.