• Elasticsearch学习之SearchRequestBuilder的query类型


    1. 分词的时机

      对于ES来讲,可以对文档的内容进行分词(前提是设置了analyzed),也可以对输入的搜索词进行分词。对输入的搜索词进行分词时需要看下使用的什么类型的query。不同的query可能会对词进行分词,也可能不分词。无论是文档分词还是搜索词分词,依赖于使用的是什么分词器。分词的结果和分词规则(假设使用的是默认的standard),去掉大部分标点符号,并以此分割原词为多个词,把分分割后的词转为小写(汉字的话分完的结果)放入token组中,对于not-analyzed的词,直接把原词放入token组中。如下所示:

    http://192.168.1.114:9200/_analyze?pretty&analyzer=standard&text=销售管理,结果:

    {  
        tokens: [  
            {  
                token: "",  
                start_offset: 0,  
                end_offset: 1,  
                type: "<IDEOGRAPHIC>",  
                position: 0  
            },  
            {  
                token: "",  
                start_offset: 1,  
                end_offset: 2,  
                type: "<IDEOGRAPHIC>",  
                position: 1  
            },  
            {  
                token: "",  
                start_offset: 2,  
                end_offset: 3,  
                type: "<IDEOGRAPHIC>",  
                position: 2  
            },  
            {  
                token: "",  
                start_offset: 3,  
                end_offset: 4,  
                type: "<IDEOGRAPHIC>",  
                position: 3  
            }  
        ]  
    }  

    如果进行搜索的时候会使用倒排索引的方式进行查找。
    使用不同类型的query进行搜索
    1. termQuery的机制是:直接去匹配token,如上面的分词结果如果是
      termQuery(销售)//无结果,token数组不存在
      termQuery(销)//  有结果,token数组中存在
      termQuery(售)//  有结果,token数组中存在
    2. matchQuery的机制是:先检查搜索的字段类型是否是analyzed,如果是,则先使用分词器分词,再去去匹配token;如果查询的字段没有被分词,则直接去匹配token。
      matchQuery(销售)
      2.1 如果查询的'销售' 字段在建索引的时候没有指定not_analyzed,那么会先进行分词在查询。会分为'销'和'售',然后依次进行查询。
      2.2 如果指定了not_analyzed,那么将直接使用'销售'进行查询。

  • 相关阅读:
    Orcale三层嵌套实现分页功能
    在VM虚拟机上安装Microsoft Dynamics CRM 2016 步骤图解及安装注意事项
    CSS 选择器 关系
    C#获取当前程序运行路径的方法集合//获取当前进程的完整路径
    连接QuickBooks Online实现于IOS App数据同步功能的个人记录
    Posix定义的进程线程同步系统调用
    SQL SERVER 数据库事物日志 备份 收缩 腾出空间
    JAVABEAN递归转MAP实现
    第一次迭代——视频点播系统
    cstddef定义了NULL
  • 原文地址:https://www.cnblogs.com/sunfie/p/9030372.html
Copyright © 2020-2023  润新知