Lucene中查询和文档之间的余弦相似性

时间:2011-08-29 04:53:16

标签: lucene similarity cosine tf-idf

我想在长查询和集合中的文档之间获得余弦相似性。我正在使用Lucence索引集合并提交查询以检索文档。

但是,我收到一些查询的以下错误。

"Caused by: org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024"

我复制了查询中的一些术语以增加其重量。但似乎lucene只是进行简单的布尔检索,而不是使用tf-idf为文档和查询计算余弦相似度。

有人可以证实吗?

1 个答案:

答案 0 :(得分:1)

此页面解释了lucene中使用的评分:

http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/search/Similarity.html

它声明:

  

文档d的查询q的分数与信息的向量空间模型(VSM)中的文档和查询向量之间的 余弦距离 或点积相关恢复。其矢量更接近该模型中的查询矢量的文档得分更高。

所以不,lucene不只是使用布尔检索。

您的异常与您的查询以及lucene转换它的方式有关。如果您能给出一个失败的查询示例,将会很有帮助。

此外,你写道:

  

我复制了查询中的一些术语以增加其重量。

您不必这样做,而是可以简单地为查询中的术语指定权重: http://lucene.apache.org/java/2_0_0/queryparsersyntax.html

E.g。要搜索苹果和橙子,并提升橙色,你可以写:

apple orange^4