elasticSearch(六)--全文搜索
数据案例
1、匹配查询
a、单词查询
执行match步骤:
·检查field类型:title字段为(analyzed)字符串,所以搜索时,title需要被分析。
·分析查询字符串:QUICK! 经过标准分析器分后为quick
·找到匹配文档:再倒排索引中找到quick,并返回包含该词的文档(1,2,3)
·为每个文档打分:查询综合考虑词频( 每篇文档 title 字段包含 quick 的次数) 、 逆文档频率( 在全部文档中 title 字段包含 quick 的次数) 、
包含 quick 的字段长度( 长度越短越相关) 来计算每篇文档的相关性得分 _score
b、多词查询
<1> 文档4的相关度最高, 因为包含两个"brown"和一个"dog"。
<2> 文档2和3都包含一个"brown"和一个"dog", 且'title'字段长度相同, 所以相关度相等。
<3> 文档1只包含一个"brown", 不包含"dog", 所以相关度最低。
因为 match 查询需要查询两个关键词: "brown" 和 "dog" , 在内部会执行两个 term 查询并
综合二者的结果得到最终的结果。 match 的实现方式是将两个 term 查询放入一个 bool 查询, bool 查询在之前的章节已经介绍过。
重要的一点是, 'title' 字段包含至少一个查询关键字的文档都被认为是符合查询条件的。匹配的单词数越多, 文档的相关度越高。
提高精度
默认匹配结果为或的关系,如brown dog 搜索结果为包含brown或者dog的文档
match查询接受operator参数提高精度。默认operator=or
match 查询有 'minimum_should_match' 参数, 参数值表示被视为相关的文档必须匹配的关键词个数。 参数值可以设为整数, 也可以设置为百分数。
因为不能提前确定用户输入的查询关键词个数, 使用百分数也很合理
2、组合查询
计算得分
把所有符合 must 和 should 的子句得分加起来, 然后除以 must 和 should 子句的总数为每个文档计算相关性得分。
must_not 子句并不影响得分; 他们存在的意义是排除已经被包含的文档。
精度控制
所有的 must 子句必须匹配, 并且所有的 must_not 子句必须不匹配, 但是多少 should 子句应该匹配呢? 默认的, 不需要匹配任何 should 子句,
一种情况例外: 如果没有 must 子句,就必须至少匹配一个 should 子句。像我们控制 match 查询的精度一样,
我们也可以通过 minimum_should_match 参数控制多少 should 子句需要被匹配, 这个参数可以是正整数, 也可以是百分比。
结果集仅包含 title 字段中有 "brown" 和 "fox" , "brown" 和 "dog" , 或 "fox" 和 "dog" 的文档。 如果一个文档包含上述三个条件, 那么它的相关性就会比其他仅包含三者中的两个条件的文档要高
最新文章
- MySQL安装,启动
- luogu[1135]奇怪的电梯
- Interview with BOA
- Hadoop学习笔记: sqoop配置与使用
- turing 项目引用
- oracle进制转换
- SDUT 最短路径(二维SPFA)
- ios 异步多线程 获取数据
- css多行文本居中
- Java 中使用Jackson反序列化
- 网站waf检测
- hihoCoder #1082 : 然而沼跃鱼早就看穿了一切(字符串处理)
- socket 编程--sockaddr与sockaddr_in区别与联系(转)
- 关于eclipse项目的x号报错的一些问题
- android中webView加载H5,JS不能调用问题的解决
- [Node.js]29. Level 6: Socket.io: Setting up Socket.io server-side &; Client socket.io setup
- UVALive-2531 The K-League (最大流建模+枚举)
- [CC-ANUCBC]Cards, bags and coins
- 跟着太白老师学python day11 函数名的应用 globals(), locals()
- Spring WebSocket入门(一) 转载
热门文章
- b站m4s视频混流
- Java--判空方法
- element中 popconfirm与tooltip同时使用
- Linuxt通过命令lsof或者extundelete工具恢复误删除的文件或者目录
- requests学习笔记02
- 你应该知道的 50 个 Python 单行代码
- Java集合-Set接口
- Account Manager privacy agreement
- 无线网络技术 实验2 无线网络环境RSSI测试实验
- KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例