2011-08-29 77 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