solr in action翻译-第三章Solr的关键概念 3.3
转载请声明出处,谢谢。翻译也很辛苦
3.1.8快速回顾
此时,您应该有个基本的掌握如何Solr倒存储信息索引和查询索引来查找匹配的文档。这包括查找条件,使用布尔逻辑创建任意复杂的查询,和得到结果返回的结果集合操作的每个词查找。我们还讨论了如何Solr存储位置和能够使用那些找到确切的短语,甚至模糊短语匹配通过使用距离和位置计算的查询。对模糊搜索在单一的术语中,我们检查了使用通配符和edit-distance搜索发现拼写错误或相似的词。虽然Solr的查询功能扩大在第7章,这些关键操作作为生成的基础大多数Solr查询。他们也准备我们很好地提供必要的背景讨论Solr的关键词相关性评分模型在接下来的部分中。
3.2。相关性
找到匹配的文档是第一个关键的步骤,创建一个伟大的搜索体验,但这只是第一步。大多数客户不愿意读完一页一页搜索结果的找到他们正在寻找的文件。在我们的一般经验,只有10%的消费者愿意超越任何给定的搜索的第一页上网站,只有1%的人愿意导航到第三页。
Solr做一份好工作的保证搜索结果的排序的最佳匹配结果列表的顶部。它通过计算相关性得分为每个文档,然后排序搜索结果从得分最高最低。本节将概述如何计算这些相关性得分哪些因素影响。我们将深入挖掘背后的理论Solr的违约相关性计算和具体计算用于计算相关性分数,同时提供了直观的例子,以确保你离开这部分固体的理解,对许多人来说,可能是最难以捉摸的方面使用Solr。我们将首先讨论相似类,负责大部分的方面查询的相关性分数计算。
3.2.1默认的相似性
Solr的相关性分数是基于相似类,可以定义在域Solr模式的schema.xml(在第五章进一步讨论),相似性是一个Java类定义了一个相关性如何得分的计算方法是基于一个查询的结果。虽然你可以选择多个相似类,甚至编写您自己的,它是一定要理解Solr的默认相似性实现和背后的理论为什么工作这么好。
默认情况下,Solr使用Lucene的(适当命名的)DefaultSimilarity类,它使用一个双行程模型来计算相似度。首先,它使用了一个布尔模型(描述在3.1节)来过滤掉任何文档不匹配客户的查询。然后,它使用向量空间模型的得分和图纸查询向量,以及一个额外的为每个文档向量。每个文档的相似性得分在查询向量之间的余弦和文档的向量,作为描述如图3.6所示。
图3.6。余弦相似度向量的术语。查询词向量、v(q)接近文档1词向量v(d1)比文档2词向量
v(d2)的夹角的余弦每个文档的术语查询向量和向量。查询词之间的角越小向量和文档的向量,和类似的查询文档被认为是。
在这个得分向量空间模型,为每个文档和词向量计算而查询的对应词向量。两个向量的相似度
可以通过计算它们之间的余弦,1是一个完美的余弦的吗比赛,0表示没有相似的余弦。更直观,更近
向量一起出现,如图3.6所示,越相似。角越小向量之间的余弦越大,越接近的比赛。
当然,整个过程最具挑战性的部分是提出合理向量表示的查询和文档的重要特性比较。让我们看看整个,复杂的相关性公式DefaultSimilarity类。然后我们将去逐行直观地解释组件的相关性公式所试图完成的工作。
给定一个查询(q)和文档(d),查询文档的相似性得分可以计算出如图3.7所示。
图3.7。DefaultSimilarity评分算法。每个组件在这个公式将在下面的章节中详细解释。
哇!方程可以很压倒性的,尤其是乍一看。幸运的是,更直观的每个块分解时。给出了数学供参考,但你可能永远不会需要深入完整的方程,除非你决定为你的搜索应用程序覆盖相似类。
重要概念的相关性计算的部分高层公式表示在图3.7:词频率(tf),逆文档频率(idf),任期增加(t.getBoost),现场规范化(规范)、协调的因素(coord),查询正常化(queryNorm)。让我们深入每个人的目的这些。
3.2.2。词的频率
词的频率(tf)是衡量频率出现在一个匹配一个特定的术语文档,这是一个“好”文档匹配的术语。
如果你是通过搜索索引搜索充斥着报纸上的一篇文章美国总统,你喜欢找文章只提到总统一次,或文章,讨论总统一直在文章吗?如果一篇文章恰好包含短语和美国总统每一个时间(可能断章取义),它应该被认为是相关的一篇文章包含这些短语多次吗?
在表3.9中,显然第二篇文章讨论了比第一次更相关,和识别短语的总统和美国多次文章提供了一个强有力的迹象表明,第二篇文章的内容更为密切与此相关的查询。
表3.9。文件提到总统和美国
Article 1 (less relevant) | Article 2 (more relevant) |
Dr. Kohrt is the interim president of Furman University, one of the top liberal arts universities in the southern United States. In 2011, Furman was ranked the 2nd most rigorous college in the country by Newsweek magazine, behind St. John’s College (NM). Furman also consistently ranks among the most beautiful campuses to visit and ranks among the top 50 liberal arts colleges nation-wide each year. | Today, international leaders met with the President of the United States to discuss options for dealing with growing instability in global financial markets. President Obama indicated that the United States is cautiously optimistic about the potential for significant improvements in several struggling world economies pending the results of upcoming elections. The President indicated that the United States will take whatever actions necessary to promote continued stability in the global financial markets. |
一般来说,一个文档被认为是更相关的特定主题(或查询术语)如果多次出现的话题。
这是基本前提的tf组件默认Solr相关性公式。文档中的搜索词出现的次数越多,越相关,文档被认为是。这不可能,10次的一个术语然而,相关文档的10倍,所以tf计算使用的平方根的次数搜索词出现在文档中,为了减少额外的贡献为每个后续的相关性得分搜索词
3.2.3。逆文档频率
并非所有的搜索词都是平等的。想象一下如果有人搜索库目录由苏斯博士《帽子里的猫,和顶部的那些结果涵盖了高频率的单词,而不是猫和帽子。常见的感觉表明的话,更可能是罕见的所有文档更好的匹配查询条件更常见
逆文档频率(idf),衡量一个搜索词“rare”,如何计算通过寻找文档频率(总数有多少文档搜索词出现内),并计算其逆(在图3.7中看到完整的公式计算)。
因为idf的词出现在查询和文档,它的平方相关性公式。
图3.8显示了一个视觉的例子“稀薄”的每一个词在标题猫在帽子(相对于一个通用的图书馆的书),更高的国防军表示为一个更大的术语。
图3.8。视觉描绘的相对重要性来衡量以色列国防军。罕见的条款被描绘成大,表明一个更大的逆文档频率。
同样,如果有人有经验的Solr发展寻找一个概要文件团队领导在大量的简历,我们不会指望文件等级更高的最佳匹配单词一个,团队,或有经验的。相反,我们所期望的重要术语像最大的术语如图3.9所示。
图3.9。相对分数的另一个演示的术语来自以色列国防军。再次,更高的国防军预示着一个少见的相关术语,描述这里使用较大的文本。
明确用户正在寻找的人谁知道Solr和可能是一个团队领导,所以这些term脱颖而出,更多的重量时,发现在任何文档。
词频和逆文档频率,当在相乘相关性计算,提供了一个很好的平衡。术语频率升高条款多次出现在一个文档中,而逆文档频率惩罚出现通常在多个文档这些条款。因此,及的,在英语常用词,如,最终产量低的分数,尽管他们可能任何给定的文件中出现多少次。
3.2.4。Boosting
这是没有必要离开你的相关性计算的各个方面达到的Solr。如果你有关于你的领域知识内容,你知道吗,某些领域或方面都比较(或小于)重要他人 - 你可以在任何时间建立索引或查询提供助力时间,以确保这些字段或项的权重相应的调整。
Query-time增加,最灵活和易于理解的形式提高,用途语法如下:
• Query: title:(solr in action)^2.5 description:(solr in action)
这个示例提供了一个提高2.5到title字段的搜索短语,同时提供默认的1.0提高到description字段。除非另有规定,所有条款获得一个默认的提高为1.0(这意味着计算分数乘以1,或离开它最初计算)。
查询提高也可以用来惩罚某些条款如果使用小于1.0的提高:
• Query: title:(solr in action) description:(solr in action)^0.2
注意,小于1的提升仍是一个积极的推动。它不惩罚的文档绝对值;它可以提高人的任期不到1的正常增加,否则它会已收到。
可以应用于任何这些query-time提高查询的一部分:
• Query: title:(solr^2 in^.01 action^1.5)^3 OR "solr in action"^2.5
甚至某些查询解析器允许提高整个字段默认情况下,应用我们将讨论进一步在第7章。
除了query-time增加,可以提高文档或字段内文档索引。这些促进分解成常态,这是覆盖在接下来的部分。
3.2.5。归一化因子
默认Solr相关性公式计算三种归一化的因素规范(规范):字段,查询规范和coord因素。
Field norms
该领域标准化系数(字段规范)因素描述的组合per-document基础上某个领域的重要性。规范在计算领域指数时间和被表示为一个额外的字节Solr索引中的每个字段。这个字节包的信息:增加上设置的文档索引时,提高上设置字段索引时,和一个长度归一化因子,处罚了文档和帮助短文档(在找到任何给定的假设关键字在长文档更少,因此有关)。现场规范计算使用公式如图3.10所示。
图3.10。现场规范计算。现场规范结合匹配文档的提振,匹配字段的增加,和length-normalization因素,处罚长文档。这三个相当独立的块数据被存储为一个字节在Solr索引,这是唯一的原因他们是组合成单个字段规范变量
norm(t,d) = d.getBoost() · lengthNorm(f) · f.getBoost(
d.getBoost()组件代表提高应用于文档的时候发送Solr,f.getBoost()组件代表提高应用的领域
的标准计算。值得一提的是,Solr允许同一领域多次添加到文档(在幕后执行一些魔法地图每个单独的条目字段相同的底层Lucene字段)。因为复制最终字段映射到相同的底层字段,如果该领域的多个副本存在,f.getBoost()成为领域的产品提升为每个多个字段使用相同的名称。
如果title字段添加到文档的三倍,例如,一旦刺激的3,一旦提高1,一旦提升为0.5,f.getBoost()的三个字段(或者一个基本字段)
• Boost: (3) · (1) · (0.5) = 1.5
除了index-time增强,一个参数称为标准长度是考虑到term规范。标准长度计算的数量的平方根
term在该领域的计算。
也值得一提,文档增加内部实现为一个boost在文档的各个领域。换句话说,应用之间没有区别推动一个文档和应用相同的细胞可以促进各个领域,因为所有文档增加最终存储每个字段内为每个文档字段规范。
标准长度的目的是为文档不同长度的调整,这样长文档不维持一个不公平的优势,更大的可能性包含给定次数的任何特定的术语。
假设你执行一个搜索关键字。你喜欢新闻文章提出提到北京五次,还是宁愿一个不起眼的,300页的书回来,也是提到北京只有5次。常见的感觉表明北京比例更普遍的一个文档可能更好的匹配,其他一切不变。这是标准长度尝试考虑。
整体规范,计算从产品文档的提高,提高,和规范,编码为一个字节的存储在Solr索引。因为从本产品编码的信息量大于单个字节可以存储,一些精度损失发生在这个编码。在现实中,这种损失富达通常整体相关性的影响可以忽略不计,因为它通常只大差异,考虑到在所有其他相关性标准方差。
Query norms
查询规范是最有趣的一个因素在默认Solr相关性计算。它不影响整体相关性排序,相同的queryNor适用于所有文档。它只是试图使作为归一化因素成绩查询之间的可比性。它使用的平方之和为每个的重量查询条件生成这个因素,增加与其他相关性得分规范化。查询标准不应影响每个文档的相对权重匹配一个给定的查询。
coord因素
最后一个规范化的因素考虑在默认Solr相关性计算是coord因素。它的作用是测量有多少查询的每个文档匹配。假设您执行以下搜索:
• Query: Accountant AND ("San Francisco" OR "New York" OR "Paris")
你可能更愿意找到一个会计在你提到的每一个城市设有办事处发生了反对一个会计人提到“纽约”一遍又一遍。
如果所有这四个条件匹配,coord因素是4/4。如果三个匹配,coord因素3/4,如果只有一个匹配,这是1/4。
coord因素背后的想法是,所有条件都相同的情况下,文件包含更多的条件查询中只要得分高于文档匹配。
我们已经讨论过的所有主要组件默认相关性算法Solr。我们讨论了tf和idf,相关性分数的两个最关键的组成部分计算。然后我们通过提高和归一化因素,提炼分数计算tf和idf孤独。与一个坚实的概念理解和详细概述特定组件的相关性得分公式,我们现在开始讨论精度和召回,测量的总体质量的两个重要方面从任何搜索系统返回的结果集。
3.3。精度和召回
精密的信息检索概念(衡量精度)和回忆衡量彻底性)是简单的解释,但理解也很重要在构建任何搜索应用程序或理解为什么返回结果不满足您的业务需求。我们将在这里提供一个简短的总结这些关键概念。
3.3.1。精度
一组搜索结果的精度(匹配查询的文档)测量试图回答这个问题,”回来的文档我正在寻找的吗?
更多的技术,精密的定义是(在0.0和1.0之间)
# Correct Matches / # Total Results Returned
让我们回到我们的示例3.1节关于寻找一本书的主题购买新房。我们由公司内部测量的书在表3.10被认为是好的匹配查询。
表3.10。相关书籍列表
相关的书籍
1 The Beginner’s Guide to Buying a House
2 How to Buy Your First House
3 Purchasing a Home
其他书名,对于本例,将不会被认为是相关的有人感兴趣购买新房。表3.11列出了几个例子。
表3.11。无关的书籍列表
无关紧要的书
4 A Fun Guide to Cooking
5 How to Raise a Child
6 Buying a New Car
对于本例,如果所有的文档应该返回(文档12,和3)返回,没有更多,这个查询的精度将是1.0(3正确匹配/ 3完全匹配),这将是完美的。
然而,如果所有六个结果回来,精度只会是0.5,因为一半的返回的结果是不正确的;也就是说,它们并不精确。
同样的,如果只有一个结果从相关的列表(例如,2号)精度仍然是1.0,因为所有回来的结果是正确的。当你可以看到,精度是衡量“好”的每一个查询的结果是,但它支付吗没有注意有多彻底,一个查询,它返回一个正确的文档的一百万年其他正确的文件仍然被认为是完全精确的。
因为精度只考虑的整体精度结果回来没有结果集的全面性,我们需要平衡精度测量一个考虑彻底性:召回。
3.3.2。召回
而精度正确衡量每个返回的结果是,召回是一个的全面的搜索结果。回忆是回答这个问题:“如何许多正确的文件返回?”
更多的从技术上讲,回忆被定义为
# Correct Matches / (# Correct Matches + # Missed Matches)
演示召回计算的一个例子,例子显示相关的书籍和无关紧要的书从最后一节一直在重新创建表3.12供参考。
Relevant books Irrelevant books
1 The Beginner’s Guide to Buying a House 4 A Fun Guide to Cooking
2 How to Buy Your First House 5 How to Raise a Child
3 Purchasing a Home 6 Buying a New Car
如果所有六个文件返回搜索查询,召回将1因为所有正确的匹配被发现并没有错过比赛(而我们看到早些时候精度将0.5)。
同样,如果只有文档1返回,召回只会是1/3,因为两个应该返回的文档/召回失踪。
这突出了精度和召回的关键区别:精度高当返回的结果是正确的,回忆是高当正确的结果。召回不在乎,所有的结果是正确的。精密不在乎的结果现在。
在下一节中,我们将讨论策略来引人注目的一个适当的平衡精度和召回。