Elastic search常用分词 和 多字段搜索优化
分词器
ES的分词器把文本解析为一个一个的词,写入倒排索引中
filter过滤器
- lemmagen 词性还原
- stop 停顿词
- shingle 临近词n个作为一组查询
analyzer分词器
- standard标准分词器
多字段搜索优化
bool 查询采取 more-matches-is-better 匹配越多越好的方式,所以每条 match 语句的评分结果会被加在一起,从而为每个文档提供最终的分数 _score 。
boost 权重
{"multi_match": {"query": "Quick brown fox","type": "best_fields", //默认类型"fields": [ "title", "body^2" ], // ^2指定权重,*可以模糊匹配"tie_breaker": 0.3,"minimum_should_match": "30%" //被传递到match查询中}
}
最佳字段best_fields
bool 是如何计算评分的:
- 它会执行 should 语句中的两个查询。
- 加和两个查询的评分。
- 乘以匹配语句的总数。
- 除以所有语句总数(这里为:2)。
dis_max 即分离 最大化查询(Disjunction Max Query):
将任何与任一查询匹配的文档作为结果返回,但只将最佳匹配的评分作为查询的评分结果返回
以通过指定 tie_breaker 这个参数将其他匹配语句的评分也考虑其中;合理值应该与零接近(处于 0.1 - 0.4 之间)
多数字段most_fields
全文搜索被称作是 召回率(Recall) 与 精确率(Precision) 的战场: 召回率 ——返回所有的相关文档; 精确率 ——不返回无关文档。目的是在结果的第一页中为用户呈现最为相关的文档。
入索引可以使用不同的字段。一个是原字段(提升召回率),一个是经过词干提取、同义词处理、变音和口音词处理的字段(提升精确率)
同时可以调整boost参数指定哪个字段更重要
我们希望将所有匹配字段的评分合并起来,所以使用 most_fields 类型。这让 multi_match 查询用 bool 查询将两个字段语句包在里面,而不是使用 dis_max 查询
字段中心式(field-centric) 和 词中心式(term-centric)
字段中心式三个问题:
- 多个字段匹配相同的词 会比 一个字段完全匹配 的得分高
- and 操作符或设置 minimum_should_match 剪长尾 的效果不对
- 词频 的 TF 和 ITF工作方式 可能有问题
词频TF
一个词在单个文档的某个字段中出现的频率越高,这个文档的相关度就越高。
逆向文档频率ITF
一个词在所有文档某个字段索引中出现的频率越高,这个词的相关度就越低。
cross_fields跨字段查询
词中心式查询
天然解决第一个问题
cross_fields 类型首先分析查询字符串并生成一个词列表,然后它从所有字段中依次搜索每个词。这种不同的搜索方式很自然的解决了 字段中心式 查询三个问题中的二个。
Elastic search常用分词 和 多字段搜索优化相关推荐
- Elastic Search之分词
分词(Analysis):将文本切分为一系列单词的过程,比如 "美国留给伊拉克的是个烂摊子吗?"经过分词后的后果为:美国.伊拉克.烂摊子. 分词器(Analyzer):elasti ...
- 集成Elastic Search实现文档的全文搜索功能实战
技术选型 该领域已被Lucene独占,几乎无竞争对手. 但是直接使用Lucene非常复杂,因此出现了两个组件,一是solr,二是elastic search,elastic search流行度更高,但 ...
- Java Elastic search 常用查询
java Elastic 客户端基本使用 引入jar compile 'org.elasticsearch:elasticsearch:5.5.0'compile 'org.elasticsearch ...
- Elastic Search 深入搜索
全文搜索 match 使用operator : and提升精度 GET /my_index/my_type/_search {"query": {"match" ...
- Elastic Search 中文拼音搜索补全实战
引言 搜索提示是搜索框一个比较基础的功能,他赋予了搜索框生命,提高了用户的搜索体验.本文通过仿写 boss 直聘首页职位公司搜索,来实现一个自己搜索提示功能. 需求分析 搜索提示的情况比较多,比如根据 ...
- debian 10 buster 安装配置 elastic search 和 中文, 拼音分词
debian 10 buster 安装配置 es 和 中文, 拼音分词 安装 测试 配置 分词 IK 分词器 拼音分词 一个完整的动态映射模板(包含geo, pinyin, IK) 安装 1, 安装j ...
- Elastic Search:(二)分词器
目录 1.分词器 1.1 内置分词器的介绍和使用 1.1.1 概念 1.1.2 standard 1.1.3 simple 1.1.4 whitespace 1.1.5 stop 1.1.6 pa ...
- 如何使用 Elastic Search Low Level API 构造请求进行搜索
场景: 需要在客户端构造请求调解, 调用 Elastic Search 的 API 取到结果,并且能够使用 ES 的授权机制. 方案: 一.在客户端构造 Low Level API . 二.Low L ...
- elastic search搜索学习打分算法简单总结
elastic search搜索学习打分算法简单总结 之前也在es官网走马观花的看了一些es搜索方面的内容,发现自己之前对es的打分规则理解的很浅,最近又从阿里的<elastic stack实战 ...
最新文章
- Python编译出现错误SyntaxError: Non-ASCII character '\xe7' 时解决方法
- Linxu用户登录监测
- hibernate oracle boolean 数据类型,用hibernate向oracle读取blob数据类型为并下载到本地...
- 现代软件工程 作业 第一周博客作业
- pit和systick_PIT和TestNG突变测试简介
- yolov4用1050ti_简单粗暴的多目标跟踪神器 – DeepSort
- 【Python3网络爬虫开发实战】 1-开发环境配置
- MySQL数据库搜题_智慧树知到_MySQL数据库设计与应用_搜题公众号
- 10大Ubuntu应用程序
- LeetCode 120. 三角形最小路径和(动态规划)
- 【Sort】QuickSort
- PHP - 如何解析HTML文件
- oracle参数错误,解决oracle参数系统文件出错
- MySQL安装及可视化工具使用
- 弱电工程施工规划实施
- unity3d补间动画DoTween
- 机器学习:训练集和测试集
- level set method 水平集方法基本问题
- 背单词APP测试与评估(百词斩vs扇贝)
- 翰麟教育|教育学人物考点梳理
热门文章
- 想在微信上使用chatGPT?小程序?公众号?企业微信,最终还是选择了企业微信版本的chatgpt
- BS EN 438-4装饰用薄板材压实层压制件的分类和规范
- 是谁送给秦羽73件鸿蒙,《星辰变》秦羽的6个身份,第一个弱爆了,最后一个大反转...
- 一步一步教你网站采集规则
- 微信自定义分享指定url
- 一些特殊字符,由于编码问题显示不出来
- java生成二维码扫描跳转到指定的路径URL
- 单片机 脉搏心率检测 MSP430G2553 Pulse Sensor 红外对射
- java抢红包算法_Java抢红包的红包生成算法
- Tensorflow之基于MNIST手写识别的入门介绍