【ES】学习5-全文搜索
全文搜索两个最重要的方面是:相关性, 分析。
一旦谈论相关性或分析这两个方面的问题时,我们所处的语境是关于查询的而不是过滤。
match:单个词查询
GET /my_index/my_type/_search {"query": {"match": {"title": "QUICK!"}} }
步骤:1.分析字段类型,是string。2.分析查询字符串,得到一个单词quick。3.用term查询,在倒排索引中查找quick。4.为文档评分。
match:多个词查询
GET /my_index/my_type/_search {"query": {"match": {"title": "BROWN DOG!"}} }
match
查询必须查找两个词( ["brown","dog"]
),它在内部实际上先执行两次 term
查询,然后将两次查询的结果合并作为最终结果输出。
上面的查询,哪怕只有一个brown或者是一个dog也会匹配。
如果要求一定要同时出现brown和dog两个词,则需要operator操作符。
GET /my_index/my_type/_search {"query": {"match": {"title": { "query": "BROWN DOG!","operator": "and" #and表示两个必须都匹配,or表示匹配一个即可}}} }
用minimum_should_match指定必须匹配的词项数。可以是百分比。
GET /my_index/my_type/_search {"query": {"match": {"title": {"query": "quick brown dog","minimum_should_match": "75%"}}} }
组合查询:
GET /my_index/my_type/_search {"query": {"bool": {"must": { "match": { "title": "quick" }},"must_not": { "match": { "title": "lazy" }},"should": [{ "match": { "title": "brown" }},{ "match": { "title": "dog" }}]}} }
should语句的条件不是必须满足的,但是如果满足,则会增加文档的分数,即认为其更相关。
可以用minimum_should_match限制必须满足should的条件数。
GET /my_index/my_type/_search {"query": {"bool": {"should": [{ "match": { "title": "brown" }},{ "match": { "title": "fox" }},{ "match": { "title": "dog" }}],"minimum_should_match": 2 }} }
下面的两个查询是等价的:
{"match": {"title": {"query": "quick brown fox","minimum_should_match": "75%"}} }
{"bool": {"should": [{ "term": { "title": "brown" }},{ "term": { "title": "fox" }},{ "term": { "title": "quick" }}],"minimum_should_match": 2 } }
下面两个查询等价:
{"match": {"title": {"query": "brown fox","operator": "and"}} }
{"bool": {"must": [{ "term": { "title": "brown" }},{ "term": { "title": "fox" }}]} }
用boost参数提高should条件的重要性。
我们想让包含 Lucene
的有更高的权重,并且包含 Elasticsearch
的语句比 Lucene
的权重更高
GET /_search {"query": {"bool": {"must": {"match": { "content": {"query": "full text search","operator": "and"}}},"should": [{ "match": {"content": {"query": "Elasticsearch","boost": 3 }}},{ "match": {"content": {"query": "Lucene","boost": 2 }}}]}} }
boost
参数被用来提升一个语句的相对权重( boost
值大于 1
)或降低相对权重( boost
值处于 0
到 1
之间)
转载于:https://www.cnblogs.com/dplearning/p/6994424.html
【ES】学习5-全文搜索相关推荐
- 数据库-Elasticsearch进阶学习笔记(分片、映射、分词器、即时搜索、全文搜索等)
目录 基础概念 定义 特点 索引(Index) 分片(Shards) 副本(Replicas) 分配(Allocation) 映射(Mapping) 动态映射 显式映射 常见数据类型 文档(docum ...
- 帝国CMS7.5基于es(Elasticsearch)7.x的全文搜索插件
帝国CMS7.5基于es(Elasticsearch)7.x的全文搜索插件 - GXECMS博客 一.插件演示地址 后台演示地址:https://ecms.gxecms.cf/e/admin/inde ...
- ES 全文搜索与数据分析引擎
ES 它是一个 分布式的 全文搜索与数据分析引擎. 与关系型数据库对比: 一个ES集群可以包含多个索引(数据库),每个索引又包含了很多类型(表),类型中包含了很多文档(行),每个文档使用 JSON 格 ...
- Java小白学习指南【day54】---luceneElasticSearch全文搜索
文章目录 lucene&ES全文搜索 一.认识全文搜索引擎 1.什么是全文搜索 2.全文检索的特点 3.常见的全文索引 二.Lucene介绍 1.Lucene是什么 2.Lucene的核心 3 ...
- php全文搜索视频教程,【php启用sphinx全文搜索的实现要领】_PHP技巧_电脑技术学习,计算机学习网站,电脑维修技术教程,培训资料学习网-OAWHY...
这篇文章主要介绍了<?php启用sphinx全文搜索的实现要领 ,详细讲述了sphinx相关的配置与使用技巧,具有必然的参考借鉴价值,需要的伴侣可以参考下 本文实例讲述了<?php启用sp ...
- 全文搜索!收藏这篇Solr ElasticSearch 长文就可以搞定
转载自 全文搜索!收藏这篇Solr ElasticSearch 长文就可以搞定 摘自:JaJian`博кē Java后端技术编者说:文章从浅到深,描述了什么是全文搜索,为什么要使用全文搜索,Solr ...
- php中文搜索工具,Laravel 下 TNTSearch+jieba-PHP 实现中文全文搜索
TNTSearch+jieba-php这套组合可以在不依赖第三方的情况下实现中文全文搜索: 特别的适合博客这种小项目: 开启php扩展 pdo_sqlite sqlite3 mbstring 开始: ...
- Java全文搜索怎么弄的_全文搜索 简介
数据的分类 结构化数据 具有固定格式.有限⻓度的数据,一般用关系数据库来处理. 非结构化数据 全⽂数据,⽆固定格式.不定⻓,比如邮件.word⽂档内容. 非结构化数据的2种处理方式 顺序扫描 从前往后 ...
- ES学习一 工作原理
ES(elasticsearch),基于Lucene的全文搜索工具,常用作关系型数据库查询优化方案.分布式log检索方案.而ES之所以快则是依赖于Lucene的倒排索引结构. 以下内容基于理论学习,未 ...
最新文章
- django学习教程
- 修改cpu型号重启不变_猫头鹰展示D系列新款140毫米CPU散热器:更大散热片,能压400瓦...
- css定位页面元素,页面元素定位-CSS元素基本定位
- JavaScript判断浏览器类型及版本
- [Machine Learning] Random Forest 随机森林
- 三元运算 三个数取最大的
- 【实操】Y7000P 2020款安装黑苹果完整步骤记录
- zzuliOJ 2536: 绿绿学姐与AI 1
- SQLI_LAB——Less7~15
- tomcat server.xml详细配置
- 前端-页面性能调试:Hiper
- MDK5 添加Device
- 14565B简单使用教程
- 100天精通Andriod逆向——第2天:Android基础知识和jadx的使用
- 08、SpringCloud 系列:Nacos - 安装、启动
- 小小weibo音乐播放器
- Dev GridView网格中格式化 TimeSpan
- 注解以及Java中常用注解使用
- javascript创建对象方法总结
- fatal: not in a git directory(Git)