• 22.前缀搜索、通配符搜索、正则搜索


    主要知识点:

    • 前缀搜索
    • 通配符搜索
    • 正则搜索

       

    一、前缀搜索

    假如有如下doc数据:

    C3D0-KD345

    C3K5-DFG65

    C4I8-UI365

    现在搜索前缀为C3数据,会把前两个都搜索出来

       

    1、语法:

       

    GET my_index/my_type/_search

    {

    "query": {

    "prefix": {

    "title": {

    "value": "C3"

    }

    }

    }

    }

       

    2、前缀搜索的原理

       

    1prefix query不计算relevance score,所有结果的得分都是1,与prefix filter唯一的区别就是,filtercache bitset.

       

    2、会扫描整个倒排索引,因为他找到第一个前缀到c3的之后,还有可能后面的doc也还包含c3,所以直到扫描到整个到排索引之后才能确定。前缀越短,要处理的doc越多,性能越差,尽可能用长前缀搜索

       

    二、通配符搜索

       

    跟前缀搜索类似,功能更加强大,但是性能也很差。

       

    ?表示一个字条

    *表示0个或任意多个字符

    c? 表示以c开头,后面再有一个字符。

    1、语法:

    GET my_index/my_type/_search

    {

    "query": {

    "wildcard": {

    "title": {

    "value": "C?K*5"

    }

    }

    }

    }

       

    三、正则搜索

    用正则表达示进行搜索。

       

    GET /my_index/my_type/_search

    {

    "query": {

    "regexp": {

    "title": "C[0-9].+"

    }

    }

    }

       

    [0-9]:指定范围内的数字

    [a-z]:指定范围内的字母

    .:一个字符

    +:前面的正则表达式可以出现一次或多次

       

    这三种方式都会扫描整个倒排索引,性能会很差,在实际工作中,不到万不得已不要用这种语法。

  • 相关阅读:
    RocketMQ中Producer消息的发送源码分析
    VS等待调试
    Window&Linux遍历某一文件夹
    遍历当前USB设备信息
    批处理常用符号详解
    Windows 批处理(bat)语法大全
    Windows CMD命令大全(值得收藏)
    遍历文件夹
    ASCII,UTF-8,Unicode字符串相互转换
    shellexecute的使用和X64判断
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8526857.html
Copyright © 2020-2023  润新知