分词器

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 是如何计算评分的:

  1. 它会执行 should 语句中的两个查询。
  2. 加和两个查询的评分。
  3. 乘以匹配语句的总数。
  4. 除以所有语句总数(这里为: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)

字段中心式三个问题:

  1. 多个字段匹配相同的词 会比 一个字段完全匹配 的得分高
  2. and 操作符或设置 minimum_should_match 剪长尾 的效果不对
  3. 词频 的 TF 和 ITF工作方式 可能有问题
    词频TF

一个词在单个文档的某个字段中出现的频率越高,这个文档的相关度就越高。

逆向文档频率ITF

一个词在所有文档某个字段索引中出现的频率越高,这个词的相关度就越低。

cross_fields跨字段查询

词中心式查询
天然解决第一个问题
cross_fields 类型首先分析查询字符串并生成一个词列表,然后它从所有字段中依次搜索每个词。这种不同的搜索方式很自然的解决了 字段中心式 查询三个问题中的二个。

Elastic search常用分词 和 多字段搜索优化相关推荐

  1. Elastic Search之分词

    分词(Analysis):将文本切分为一系列单词的过程,比如 "美国留给伊拉克的是个烂摊子吗?"经过分词后的后果为:美国.伊拉克.烂摊子. 分词器(Analyzer):elasti ...

  2. 集成Elastic Search实现文档的全文搜索功能实战

    技术选型 该领域已被Lucene独占,几乎无竞争对手. 但是直接使用Lucene非常复杂,因此出现了两个组件,一是solr,二是elastic search,elastic search流行度更高,但 ...

  3. Java Elastic search 常用查询

    java Elastic 客户端基本使用 引入jar compile 'org.elasticsearch:elasticsearch:5.5.0'compile 'org.elasticsearch ...

  4. Elastic Search 深入搜索

    全文搜索 match 使用operator : and提升精度 GET /my_index/my_type/_search {"query": {"match" ...

  5. Elastic Search 中文拼音搜索补全实战

    引言 搜索提示是搜索框一个比较基础的功能,他赋予了搜索框生命,提高了用户的搜索体验.本文通过仿写 boss 直聘首页职位公司搜索,来实现一个自己搜索提示功能. 需求分析 搜索提示的情况比较多,比如根据 ...

  6. debian 10 buster 安装配置 elastic search 和 中文, 拼音分词

    debian 10 buster 安装配置 es 和 中文, 拼音分词 安装 测试 配置 分词 IK 分词器 拼音分词 一个完整的动态映射模板(包含geo, pinyin, IK) 安装 1, 安装j ...

  7. 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 ...

  8. 如何使用 Elastic Search Low Level API 构造请求进行搜索

    场景: 需要在客户端构造请求调解, 调用 Elastic Search 的 API 取到结果,并且能够使用 ES 的授权机制. 方案: 一.在客户端构造 Low Level API . 二.Low L ...

  9. elastic search搜索学习打分算法简单总结

    elastic search搜索学习打分算法简单总结 之前也在es官网走马观花的看了一些es搜索方面的内容,发现自己之前对es的打分规则理解的很浅,最近又从阿里的<elastic stack实战 ...

最新文章

  1. Python编译出现错误SyntaxError: Non-ASCII character '\xe7' 时解决方法
  2. Linxu用户登录监测
  3. hibernate oracle boolean 数据类型,用hibernate向oracle读取blob数据类型为并下载到本地...
  4. 现代软件工程 作业 第一周博客作业
  5. pit和systick_PIT和TestNG突变测试简介
  6. yolov4用1050ti_简单粗暴的多目标跟踪神器 – DeepSort
  7. 【Python3网络爬虫开发实战】 1-开发环境配置
  8. MySQL数据库搜题_智慧树知到_MySQL数据库设计与应用_搜题公众号
  9. 10大Ubuntu应用程序
  10. LeetCode 120. 三角形最小路径和(动态规划)
  11. 【Sort】QuickSort
  12. PHP - 如何解析HTML文件
  13. oracle参数错误,解决oracle参数系统文件出错
  14. MySQL安装及可视化工具使用
  15. 弱电工程施工规划实施
  16. unity3d补间动画DoTween
  17. 机器学习:训练集和测试集
  18. level set method 水平集方法基本问题
  19. 背单词APP测试与评估(百词斩vs扇贝)
  20. 翰麟教育|教育学人物考点梳理

热门文章

  1. 想在微信上使用chatGPT?小程序?公众号?企业微信,最终还是选择了企业微信版本的chatgpt
  2. BS EN 438-4装饰用薄板材压实层压制件的分类和规范
  3. 是谁送给秦羽73件鸿蒙,《星辰变》秦羽的6个身份,第一个弱爆了,最后一个大反转...
  4. 一步一步教你网站采集规则
  5. 微信自定义分享指定url
  6. 一些特殊字符,由于编码问题显示不出来
  7. java生成二维码扫描跳转到指定的路径URL
  8. 单片机 脉搏心率检测 MSP430G2553 Pulse Sensor 红外对射
  9. java抢红包算法_Java抢红包的红包生成算法
  10. Tensorflow之基于MNIST手写识别的入门介绍