我想在长查询和集合中的文档之间获得余弦相似性。我正在使用Lucence索引集合并提交查询以检索文档。
但是,我收到一些查询的以下错误。
"Caused by: org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024"
我复制了查询中的一些术语以增加其重量。但似乎lucene只是进行简单的布尔检索,而不是使用tf-idf为文档和查询计算余弦相似度。
有人可以证实吗?
答案 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