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的功能使用及相关注意事项;主要包括以下内容:环境 ...
随机推荐
- 树莓派项目(1-2)人脸识别 C++
级联分类器 在这里,我们学习如何使用objdetect在我们的图像或视频中查找对象 https://docs.opencv.org/3.3.0/db/d28/tutorial_cascade_clas ...
- 模拟赛 T1 费马小定理+质因数分解+exgcd
求:$a^{bx \%p}\equiv 1(\mod p)$ 的一个可行的 $x$. 根据欧拉定理,我们知道 $a^{\phi(p)}\equiv 1(\mod p)$ 而在 $a^x\equiv 1 ...
- Linux磁盘管理——分区和文件系统
1.分区类型 (1)主分区:最多只能有四个(主分区加扩展分区一共有四个). (2)扩展分区:最多有一个,是主分区中的其中一个.不能存储数据也不能格式化,必须再分成逻辑分区才能使用. (3)逻辑分区:是 ...
- restql 学习二 几种查询模式
restql 提供了比较强大的查询处理. 支持的几种查询模式 基本查询,主要是单一映射资源的查询,(from,with,only,header,cache...) 并行查询,多个资源的同时查询,(对于 ...
- IE和火狐的事件机制有什么区别
1.IE的事件流是冒泡流,火狐支持冒泡流和捕获流. 2.阻止事件冒泡:IE---e.cancelBubble = true; 火狐---e.stopPropagation();
- json 字符串 反序列化
private void button17_Click(object sender, EventArgs e) { string s = "{\"returnCode\" ...
- PATA1005Spell It Right
考虑输入为0的特殊情况 参考代码: #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<cstring> #in ...
- 深入js系列-类型(对象)
开篇 值的传递方式 1.值传递 表示传递过程中复制了值 2.引用传递 表示传递过程中传递的是值的引用 js的传递方式 值传递 看下面的例子 // 这里值传递很容易理解 var a = 1 var b ...
- Spring Boot 知识笔记(整合Mybatis)
一.pom.xml中添加相关依赖 <!-- 引入starter--> <dependency> <groupId>org.mybatis.spring.boot&l ...
- gcc O2优化选项对内嵌汇编以及函数递归调用的影响
学习和使用c这些年来,很多方面都未深入研究过,就如脱离了IDE后,我可能连编译一个c文件的命令都写不出来. 最近需要在c中内嵌汇编解决问题,参考网上相关的资料写了一段汇编代码,在测试的时候时好时坏,找 ...