首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >solr使用余弦相似吗?

solr使用余弦相似吗?
EN

Stack Overflow用户
提问于 2014-07-09 18:49:57
回答 3查看 3.1K关注 0票数 5

我写了一个小的搜索引擎作为我的每周专题。它基于查询向量和文档向量之间的余弦相似度。矢量是用TF-下手的记号来计算的.

我已经了解了Apache,这是一个全文搜索引擎。我的问题是,在排序搜索结果时,solr内部使用余弦相似性吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-09 19:47:50

是的,Solr (它运行在Lucene之上)确实使用了余弦相似性。来自Lucene的文档:

查询Q文档d的VSM评分是加权查询向量V(q)和V(d)的余弦相似度。 余弦-相似性(Q,d) = V(q)·V(d) /x-V(Q)_x_(V)=V(D)_x

0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html

票数 5
EN

Stack Overflow用户

发布于 2014-11-18 04:23:02

不是的。Solr使用的是与余弦相似的东西,但并不完全相同--有一些关键的区别。

如果您访问相同的链接(0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html)并进一步向下滚动,您将看到"Lucene概念评分公式“和"Lucene实用评分公式”,这两个公式给出了更多细节。

忽略任何索引/查询时间提升,以下是一些关键的区别:

1.不同文档归一化因子

它使用“document范数”,而不是用tf-国防军向量的欧几里德范数来规范每个文档。对于默认的相似度量(DefaultSimilairty),这只是1/sqrt( doc中的术语数),它基本上等于1/sqrt( sum ( tf )) --即tf是doc中计数项的和--没有与欧几里德范数的平方,而每个项都忽略了以色列国防军。此外,该值被舍入为一个字节,以节省空间。这通常会得到一个不同于归一化因子的余弦相似度的值。

2.额外的"coord“增强

还有一个额外的值乘以分数等于:文档中匹配的查询词的数量/查询中的术语总数。

这为匹配更多查询条件的字段(文档)提供了额外的推动力,并且可能具有值得怀疑的价值。这实质上是将tf-国防军向量分数与另一个内积相乘--这些向量的内积被转换为布尔向量(如果没有给定的项,则为1),而查询向量仅由其欧几里德范数标准化。

票数 7
EN

Stack Overflow用户

发布于 2020-04-06 09:42:29

如果要在Solr中寻找实际的向量相似性,有两种方法: 1)使用分隔的有效载荷。已经有几个插件实现了这一点,比如https://github.com/moshebla/solr-vector-scoringhttps://github.com/saaay71/solr-vector-scoring

2)使用流表达式,这是从盒子里出来的:5/vector-math.html

后者速度较慢,但更为灵活。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24661594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档