Solr基础理论【排名检索、查准率、查全率】
一.排名检索
搜索引擎代表了基于查询,返回优先文档的一种方法。在关系型数据库的SQL查询中,表的一行要么匹配一个查询,要么不匹配,查询结果基于一列或多列排序。搜索引擎根据文档与查询匹配的程度为文档打分,并按降序返回结果。匹配程度的计算取决于多个因素,一般而言,文档得分越高意味着该文档与查询的相关性越强。
在Solr中会存在单独的字段保存相关性,那就是score字段。在score字段的得分数值并非具有绝对意义,它在lucene内部仅作为相对排名,而且同一文档在不同的查询中的得分并无关系。也就是说,与查询匹配的文档相关度得分仅适用于该查询。返回的结果按照得分从低到高排序,文档得分越高。说明与该查询越相关。
优点:
1.提供清晰的导航方式,把用户越需要的放在越靠前的位置。
2.智能化程度高,用户无需考虑排序问题。
二.查准率
查准率【Precision,精度性的度量】的具体定义如下:正确匹配的文档数量/返回的文档数量【介于0.0~1.0之间】,例如:


假设某次搜索返回的文档集合为文档1、2、3,那么该查询的查准率为1.0【3个正确匹配/3个全部匹配】,这是理想状态。但是,如果返回全部6个结果,那么查准率仅为0.5,因为返回的结果中有一半是不相关的。同样地,如果只返回一个相关文档【比如文档1】,那么查准率依然是1.0,因为返回的结果都是匹配的。可见,查准率是衡量结果与查询是否相关的一个指标,但是它并不关注全面性,即使只返回了100个匹配文档中的1个,查准率依然为1.0【返回的文档中没有不匹配文档】。由于查准率仅考虑了返回结果的整体精确性,而未考虑结果集的全面性,因此需要将查全率与查准率配合使用。
三.查全率
查全率【Recall,全面性的度量,也称召回率】衡量的是搜索结果的全面性。定义如下:返回的正确匹配的文档数/全部正确匹配的文档数。如果仅返回一个匹配文档,则查全率为1/3,因为没有找到其它两个应该匹配的文档【此时查准率为1.0】。
四.查准率与查全率之间的平衡
查准率与查全率的重要区别是,如果返回的结果是正确的,则查准率高;如果正确的结果都被返回了,则查全率高。查准率不关心正确结果是否都被返回出来,而查全率不关心返回的结果是否都是正确的。
虽然查准率与查全率之间存在明显的互逆关系,但它们并不是相互排斥的。在前面的示例中,如果只返回全部匹配文档【文档1、2、3】,那么查准率和查全率就都是1.0。这是因为所有匹配且无不陪配的文档被返回了。
最大限度提升查准率与查全率是绝大多数搜索相关度优化的最终目标。人为或手动调整结果集看似简单,但事实上,这是一个具有挑战性的难题。Solr采用了许多技术用于提高查准率和查全率,其中大部分技术更倾向于提高返回完整文档集的查全率。合适的文本分析【找到词汇的多个变体】可以寻找更多匹配结果,但如果文本分析力度过大,匹配到了错误的词汇变体,那么这些额外的匹配结果可能会影响查准率。
Solr中平衡查准率与查全率的一种常见方式是在整个结果集上计算查全率,仅在搜索结果第一页【或前几页】上计算查准率。根据这一模型,调整Solr的相关度评分的计算方式,让更好的匹配结果被提升到搜索结果的顶部,而许多不良的匹配出现在搜索结果的底部。
如何做到查准率与查全率的最佳平衡,最终取决于现实情。在法律方面的搜索,查全率的重要性更高,因为如果遗漏了文档,就可能会导致一定的法律后果。对于其它现实需求而言,可能仅仅找到一些最佳匹配就可以了。若没有找到最佳匹配,返回为空即可。
大多数搜索应用处于两个极端之间。由于大多数情况下没有所谓的正确答案,所以在查准率与查全率之间取得适度平衡成为一项长期的挑战。不管怎样,理解查准率与查全率以及如何在两者之间做出调整,使得杠杆向某一遍倾斜【另一边上升】,是有效改进搜索结果质量的关键。
五.不适宜使用solr的情况
1.经常需要返回大量文档的情况。搜索引擎一般会为每个查询返回一小部分文档集合,通常为10~100个。同一查询的更多文档可以通过solr内置的分页功能获取。当需要返回大量匹配数据时,查询本身可能执行的很快,但从底层索引结构上重构大量文档时速度极其缓慢。
2.进行深度分析任务。这需要访问大量索引,即使通过分页解决上述问题,底层索引的数据结构也并不适合一次检索大量索引。
Solr基础理论【排名检索、查准率、查全率】的更多相关文章
- Solr基础理论与维护管理快速上手(含查询参数说明)
1. solr基础 因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语.更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容.通过对 Solr 进行适当的配置,某些 ...
- solr系统query检索词特殊字符的处理
solr是基于 lucence开发的应用,如果query中带有非法字符串,结果很可能是检索出所有内容或者直接报错,所以你对用户的输入必须要先做处理.输入星号,能够检索出所有内容:输入加号,则会报错. ...
- 我的solr学习笔记--solr admin 页面 检索调试
前言 Solr/Lucene是一个全文检索引擎,全文引擎和SQL引擎所不同的是强调部分相关度高的内容返回,而不是所有内容返回,所以部分内容包含在索引库中却无法命中是正常现象. 多数情况下我们 ...
- [转]solr系统query检索词特殊字符的处理
原文地址:http://blog.csdn.net/wgw335363240/article/details/39889979 solr是基于 lucence开发的应用,如果query中带有非法字符串 ...
- Solr基础理论【相关度计算】
一.简介 寻找匹配的文档是构建优质搜索体验的关键步骤,但这仅仅是第一步.大多数用户不愿意通过逐页翻阅搜索结果来找到想要的文档.根据一般经验,仅有10%的用户在网页搜索中有意愿继续翻阅第一页以后的搜索结 ...
- Solr基础理论【倒排索引,模糊查询】
一.简介 现有的许多不同类型 的技术系统,如关系型数据库.键值存储.操作磁盘文件的map-reduce[映射-规约]引擎.图数据库等,都是为了帮助用户解决颇具挑战性的数据存储与检索问题而设计的.而搜索 ...
- 查准率(precision)和查全率(recall)
一.理解查准率(precision)& 查全率(recall) 我们在平时常用到的模型评估指标是精度(accuracy)和错误率(error rate),错误率是:分类错误的样本数站样本总数的 ...
- 【分类问题中模型的性能度量(一)】错误率、精度、查准率、查全率、F1详细讲解
文章目录 1.错误率与精度 2.查准率.查全率与F1 2.1 查准率.查全率 2.2 P-R曲线(P.R到F1的思维过渡) 2.3 F1度量 2.4 扩展 性能度量是用来衡量模型泛化能力的评价标准,错 ...
- Solr调研总结
http://wiki.apache.org/solr/ Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境 ...
随机推荐
- java 的守护进程脚本
#!/bin/sh ] do Tag=`ps -ef|grep 'jar包名称'|grep -v grep|wc -l|awk '{printf $1"\n"}'` ] then ...
- 从一段文字中提取出uri信息
package handle.groupby; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io ...
- Windbg Register(寄存器)窗口的使用
寄存器是位于在 CPU 的小易失性内存单位. 许多寄存器专用于特定用途,并可用于用户模式应用程序使用的其他寄存器. 基于 x86 和基于 x64 的处理器在有可用的寄存器的不同集合. 如何打开寄存器窗 ...
- contest1 CF1084 div2 oooxx oooxo ooooo
题意: div2D (x)(x) 给出一棵树, 找出一条路径, 使得每一时刻点权和\(\ge\)边权和, 并且点权和\(-\)边权和最大 div2E (x)(o) 给出两个长度为\(n(\le 5e5 ...
- token的验证过程
1.用户向服务器发送用户名和密码. 2.服务端收到请求,验证用户名和密码. 3.验证成功后,服务端会签发一个token,并将这个token发送到客户端. 4.客户端收到token后将token存储起来 ...
- 第02组Alpha冲刺(3/4)
队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:写博客,复习C语言 GitHub签入记录 接下来的计划:构思游戏实现 还剩下哪些任务:敲代码 燃尽图 遇到的困难:Alpha冲刺时间 ...
- 测试之selenium简介
目录 selenium是什么? 应该具备的知识 Selenium功能特性 Selenium的局限性 Selenium与QTP比较 Selenium工具套件 Selenium集成开发环境(IDE) Se ...
- 【Gamma阶段】第六次Scrum Meeting
冰多多团队-Gamma阶段第六次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 卓培锦 编辑器风格切换(添加夜间模式) UI界面手势切换 牛雅哲 语音输入shell应用:基于pytorch ...
- python cython c 性能对比
我们用以下方法计算百万以上float型数据的标准偏差,以估计各个方法的计算性能: 原始python numpy cython c(由cython调用) python 原始方法: # File: Std ...
- HTML5微信长按图片不会弹出菜单的解决方法
HTML5微信长按图片不会弹出菜单的解决方法 <pre><div ontouchstart = "return false;"></div>&l ...