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

Elasticsearch 怎么实现在搜索结果中排除某个词?类似于 Google 的减号指令

  •  
  •   audestick ·
    audeSt · 2016-09-18 09:52:21 +08:00 · 5581 次点击
    这是一个创建于 2778 天前的主题,其中的信息可能已经有所发展或是发生改变。
      2 、减号
    
      减号(-)表示搜索结果不包含减号后面词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着要排除的词,谷歌和百度都支持这个词。
    
      例如:搜索 “苹果 –电影”,返回结果页面就排除了《苹果》这部电影的结果,而不影响苹果手机电脑和苹果作为水果的内容。
    
    12 条回复    2016-09-18 11:40:08 +08:00
    audestick
        1
    audestick  
    OP
       2016-09-18 09:57:00 +08:00
    audestick
        2
    audestick  
    OP
       2016-09-18 09:57:46 +08:00
    audestick
        3
    audestick  
    OP
       2016-09-18 09:58:05 +08:00
    audestick
        4
    audestick  
    OP
       2016-09-18 09:58:29 +08:00
    求助!先提前谢谢三位同学了~
    oaix
        6
    oaix  
       2016-09-18 10:18:22 +08:00
    {query: {bool: { must_not: {term: {name: "apple"}} }} }
    audestick
        7
    audestick  
    OP
       2016-09-18 10:29:31 +08:00
    @xguox cool!我得好好看下文档了看来...
    xguox
        8
    xguox  
       2016-09-18 11:06:02 +08:00
    @oaix 这是精确匹配吧? 不是 "apple" 才命中, "an apple" 都不会命中 这个查询
    xguox
        9
    xguox  
       2016-09-18 11:07:53 +08:00
    说错, 应该 "an apple" 之类的可以命中.
    oaix
        10
    oaix  
       2016-09-18 11:16:28 +08:00
    @xguox 嗯,不应该用 term ,使用 match ,比如楼主需要搜索 apple ,但排除 film ,可以这样搜{query: {bool: { must: { match: "apple"}, must_not: {match: "film"}}}
    Suclogger
        11
    Suclogger  
       2016-09-18 11:38:22 +08:00
    恩, bool query 是正解
    audestick
        12
    audestick  
    OP
       2016-09-18 11:40:08 +08:00
    @xguox @oaix @oaix
    是的,我把问题想复杂了.

    两者都可以.

    一个是 query string
    一个是 match query

    都可以.

    只不过 query string 更简洁一点

    谢了各位~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2888 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 03:30 · PVG 11:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.