文章转载自:

https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247483914&idx=1&sn=436f81480c2a15af6345183f8eebf16e&chksm=eaa82a22dddfa334c95c3f4bd227c9a78bba20715494b464c5068bc260d9b4320412736fed77&scene=21#wechat_redirect

一、高级检索的功能点

通过高级搜索配置搜索项,能更准确的过滤掉不相干信息,获取最想要的检索信息。

二、高级检索拆分

1、包含以下全部的关键词:

需要分词处理;

若需要指定字段,则使用matchQuery实现;

若无需指定字段的全文检索,则使用queryStringQuery实现;

2、包含以下的完整关键词 :

需要完整匹配字符,使用wildcardQuery结合”*”实现;

3、包含以下任意一个关键词 :

空格分隔每个关键词,需要将多个词空格拆分,然后对每个关键词通过should结合wildcardQuery遍历实现;

4、不包括以下关键词 :

包含以下全部关键词的反面,

若需要指定字段,则使用must_not结合matchQuery实现;

若无需指定字段,则使用must_not结合queryStringQuery实现;

5、限定要搜索的网页的时间是:

限定搜索的开始和结束时间,通过rangeQuery实现。

6、关键词位置:

根据关键词位置的不同,采用不同的实现;

关键词位于title字段:指定title进行检索;

关键词位于content字段:指定content进行检索;

关键词位于全部字段:不指定字段进行检索,多使用 queryStringQuery实现。

三、DSL高级检索实现

    POST detail_index/_search

    {

      "from" : 0,

      "size" : 10,

      "query" : {

        "bool" : {

          "must" : [

            {

              "match" : {

                "title" : {

                  "query" : "苹果乔布斯",

                  "operator" : "OR",

                  "prefix_length" : 0,

                  "max_expansions" : 50,

                  "fuzzy_transpositions" : true,

                  "lenient" : false,

                  "zero_terms_query" : "NONE",

                  "boost" : 1.0

                }

              }

            },

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*苹果总裁库克*",

                  "boost" : 1.0

                }

              }

            },

            {

              "range" : {

                "create_time" : {

                  "from" : "2017-09-07 00:00:00",

                  "to" : "2017-09-15 23:59:59",

                  "include_lower" : true,

                  "include_upper" : true,

                  "boost" : 1.0

                }

              }

            }

          ],

          "must_not" : [

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*苹果梨*",

                  "boost" : 1.0

                }

              }

            }

          ],

          "should" : [

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*苹果手机*",

                  "boost" : 1.0

                }

              }

            },

            {

              "wildcard" : {

                "title.keyword" : {

                  "wildcard" : "*iphoneX*",

                  "boost" : 1.0

                }

              }

            }

          ],

          "disable_coord" : false,

          "adjust_pure_negative" : true,

          "boost" : 1.0

        }

      },

      "_source" : {

        "includes" : [

          "title",

          "content"

      ],

        "excludes" : [ ]

      },

      "highlight" : {

        "pre_tags" : [

          "<span style=\"color:red\">"

        ],

        "post_tags" : [

          "</span>"

        ],

        "fragment_size" : 100,

        "number_of_fragments" : 5,

        "require_field_match" : true,

        "fields" : {

          "title" : { }

      }

      }

    }

Elasticsearch实现类Google高级检索的更多相关文章

  1. 如何使用GOOGLE高级搜索技巧

    如何使用GOOGLE高级搜索技巧 一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发 ...

  2. Google高级搜索语法

    Google高级搜索语法   Google搜索果真是一个强悍的不得了的搜索引擎,今天转了一些 google的高级搜索语法 希望能帮助到大家. 一.allinanchor: anchor是一处说明性的文 ...

  3. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字

    Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...

  4. Python——类的高级主题

    介绍关于类的一些高级主题,这些是可选的,在Python应用程序中,不会常常遇到. =========================================================== ...

  5. 前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器

    前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器 一丶CSS简介    叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 ...

  6. 基于NEO4J的高级检索功能

    基于NEO4J的高级检索 一.需求 二.创建索引 1.索引自动更新配置 2.执行带有索引自动更新配置的过程 三.查询索引 1.LUCENE查询语法 2.实现高级检索的核心:LUCENE QUERY语句 ...

  7. 关于对象的行为、数组、继承和类的高级概念(Java)

    1.对象的行为:                   (1)方法调用栈:所有的方法调用都维护在一个称为调用栈的结构中. 第一个被调用的方法就是main(),该方法是Jvm调用的,因此main()方法总 ...

  8. Elasticsearch高级检索之使用单个字母数字进行分词N-gram tokenizer(不区分大小写)【实战篇】

    一.前言 小编最近在做到一个检索相关的需求,要求按照一个字段的每个字母或者数字进行检索,如果是不设置分词规则的话,英文是按照单词来进行分词的. 小编以7.6.0版本做的功能哈,大家可以根据自己的版本去 ...

  9. ES 21 - Elasticsearch的高级检索语法 (包括term、prefix、wildcard、fuzzy、boost等)

    目录 1 term query - 索引词检索 1.1 term query - 不分词检索 1.2 terms query - in检索 2 prefix query - 前缀检索 3 wildca ...

随机推荐

  1. kubernetes 调度

    pod 分配给特定的node节点 目的:在一般业务场景,有些pod需要运行在特定的物理节点上,可以通过kubernetes的nodeSelector.nodeName安排pod到指定的节点上运行. # ...

  2. angr原理与实践(一)——原理

    ​ 1本文系原创,转载请说明出处 关注微信公众号 信安科研人,获取更多的原创安全资讯 ​ 编辑 网上已经有很多介绍angr的官方文档的博客,但是怎么去用angr做一次有意义且成就感满满的分析的教程很少 ...

  3. 004 SpringSecurity验证规则

    SpringSecurity验证规则 SpringSecurity框架登录后,==在userDetails对象中,一定会有一个权限列表 == 登录用户对象的值可能是: {"authoriti ...

  4. shell脚本函数及数组

    函数介绍: 函数function是由若干条shell命令组成的语句块,实现代码重用和模块话编程. 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部 ...

  5. Hadoop - MapReduce 过程

    Hadoop - MapReduce 一.MapReduce设计理念 map--->映射 reduce--->归纳 mapreduce必须构建在hdfs之上的一种大数据离线计算框架 在线: ...

  6. DQL条件查询模糊查询和约束概述

    模糊查询 -- 查询姓马的有哪些? like SELECT * FROM student where name LIKE '马%'; -- 查询姓名第二个字是化的人 SELECT * FROM stu ...

  7. H5移动端实现一键复制或长摁复制

    今天接到了一个新的需求,要求我们对表单中的某一个字段进行复制,这个表单是不可选的,拿到需求的时候有点懵,不清楚下手点在哪,后来网上找了找,终于有了点眉目,感觉网上有些是实现不了的,特地在这里记录下进行 ...

  8. Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)

    设置 添加实验室人员,系统用户 因为创建实验室时必须选择实验室经理/主任/负责人,因此需要先创建实验室经理人员. 创建人员时输入人员姓名,可上传签名图片. 创建实验室部门 输入实验室名称.代码,选择实 ...

  9. Yii项目知识搜集

    [['rId','advertiser_id','image_file'], 'unique','targetAttribute'=>['rId','advertiser_id','image_ ...

  10. WPF 截图控件之绘制箭头(五)「仿微信」

    前言 接着上周写的截图控件继续更新 绘制箭头. 1.WPF实现截屏「仿微信」 2.WPF 实现截屏控件之移动(二)「仿微信」 3.WPF 截图控件之伸缩(三) 「仿微信」 4.WPF 截图控件之绘制方 ...