1

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

但是,对于某些查询,我收到以下错误。

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

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

有人可以证实这一点吗?

4

1 回答 1

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

例如要搜索苹果和橙子,并增加橙子,你可以这样写:

apple orange^4
于 2011-08-30T15:40:32.673 回答