2011-08-29 175 views
1

我想在集合中的长查询和文档之间获得余弦相似度。我使用Lucence来为收集索引并提交查询来检索文档。Lucene中的查询和文档之间的余弦相似度

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

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

我复制了一些在查询中的术语来提高他们的体重。但似乎lucene只是做简单的布尔检索,而不是使用tf-idf计算文档和查询的余弦相似度。

有人可以证实这一点吗?

回答

1

本页说明在Lucene中使用的打分:

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

它指出:

查询q的文献d的得分相关的余弦距离或在信息检索的向量空间模型(VSM)中的文档和查询向量之间的点积。在该模型中向量更接近查询向量的文档得分更高。

因此,不,lucene不只是使用布尔检索。

您的异常与您的查询有关,lucene会转换它。如果您可以举出失败的查询示例,这将会很有帮助。

此外,你写的:

我复制了一些在查询条件的,以提高他们的体重。

你没有这样做,而是可以将重量只分配到查询条件: http://lucene.apache.org/java/2_0_0/queryparsersyntax.html

例如搜索苹果和橙色,并提升橙色,你可以写:

apple orange^4 
+0

谢谢克里斯托夫。 – ablimit