Elasticsearch实现类Google高级检索
一、高级检索的功能点
通过高级搜索配置搜索项,能更准确的过滤掉不相干信息,获取最想要的检索信息。
以Google搜索为例(截取核心片段):
二、高级检索拆分
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" : {"public_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" : { }}}
}
以上DSL对应如下:
Elasticsearch实现类Google高级检索相关推荐
- ElasticSearch高级检索总结
1.1 检索方式 _search ES官方提供了两中检索方式:一种是通过 URL 参数进行搜索,另一种是通过 DSL(Domain Specified Language) 进行搜索.官方更推荐使用第二 ...
- [西柚仔]ElasticSearch高级检索总结
1.1 检索方式 _search ES官方提供了两中检索方式:一种是通过 URL 参数进行搜索,另一种是通过 DSL(Domain Specified Language) 进行搜索.官方更推荐使用第二 ...
- 3.8 高级检索方式(二)
上节已经介绍了五种高级检索方式,现在我们来学习另外五种.事实上,今天要介绍的五种高级检索方式有共通之处:都可以解决上节提到的最后一个用户需求:帮助小明快速定位游戏分类,过滤掉其他分类内容. 六.Boo ...
- 使用google高级搜索技巧
练习使用google高级搜索技巧: 关键字 and 关键字:在Google的检索规则中,最基本的一条是默认And规则,即当你输入多个检索词之后,Google默认为要检索所有的包含所有检索词的网页,它们 ...
- ElasticSearch工具类封装
最近在项目中有看到一种比较实用的ElasticSearch工具类封装方式,特此记录便于日后查阅. 1.controller层 @RequestMapping(value = " ...
- Google 高级搜索
Google高级搜索 可以使我们更好的使用网络,用好googe 高级搜索是我们搜索信息最得力的工具. "高级搜索"页的工作原理 您可以在"高级搜索"页中输入搜索 ...
- Case Study: 利用JS设计高级检索功能通过PHP获取MySQL数据
一.目标 该笔记的目的是引导读者借助WampServer平台和MySQL数据库,利用HTML/CSS/JS/PHP设计一个含有高级检索功能的数据库网页.该功能效果如图1所示.用户在文本框中输入相应内容 ...
- 黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入
------- android培训.java培训.期待与您交流! ---------- 黑马程序员-----集合框架类(四) 高级for循环.方法的可变参数及静态导入 1.1 高级for循环(示例1) ...
- 面试精讲之面试考点及大厂真题 - 分布式专栏 17 ElasticSearch解决大数据量检索难题
17 ElasticSearch解决大数据量检索难题 理想的书籍是智慧的钥匙. --列夫·托尔斯泰 引言 如果你的项目里有超过千万上亿级别的数据,且数据日增量较大需要高性能检索时,如订单数据,你该怎么 ...
最新文章
- ivf技术_体外受精技术介绍 谁需要IVF技术帮助
- gcc编译器和mysql源码哪个难_源码编译mysql 5.5
- RandomUnderSampler 中的fit_resample 是 imblearn.base.py中调用output = self._fit_resample(X, y)
- ActionScript3(AS3)类库学习之(八)——自定义上下文菜单
- lesson3 数码管静态显示及定时器和中断应用
- 嵌入式linux字符设备驱动
- jquery在线预览PDF文件,打开PDF文件
- 求两等长升序序列的中位数
- java.lang.NullPointerException org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)
- iOS 使用FFmpeg
- 国内pip源提示“not a trusted or secure host”解决方案
- 2020年容器应用的新思考
- android html转ubb,将 html 转成 ubb代码的小脚本
- 卸载oracle10g教程,卸载Oracle10g步骤
- 最近在用的一个跟单软件
- IEC61850和IEC60870-6(TASE.2)的比较
- docker MySQL 双主_DockerMysql数据库实现双主同步配置详细·TesterHome
- android studio基础教程:2.程序在哪写
- pandas 筛选数据的 8 个骚操作
- 支付宝支付 微信支付SDK接口不统一? 盘他!
热门文章
- Invalid bound statement (not found)
- java如何接受字符_java中string怎么获取指定位置的字符
- Windows Server 笔记之活动目录,域的联系和区别
- NRF24L01跳频抗信道干扰功能探讨
- 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc
- css初始化_CodeMirror项目【在线编辑器】--项目初始化
- qpython numpy_Python-Numpy全面精简教程
- 安装mysql查看随机密码命令_linux安装mysql-8.0.21-1.el7.x86_64.rpm-bundle - 君主-bye
- python写前端代码_python学习之路前端-JavaScript
- asp dsn mysql 连接失败_ASP连接MySQL遇到一些问题 Microsoft OLE DB Provider for ODBC Drivers (0x80004005)...