2012-03-27 39 views
0

通常在使用Lucene時,您設置了一個搜索查詢,Lucene會爲您提供一些結果,您可以在其中獲得每個文檔的分數。Lucene:檢索某個元組的分數?

在我的情況下,我想改變這個過程: 我有我的數據庫的元組,並希望將它傳遞給Lucene來接收Lucene索引中某個元組的分數。這可能嗎?有誰知道如何? ;)

編輯:我當然希望我的關於某一搜索查詢元組的得分...

+0

相對分數在lucene中沒有語義含義。 – Reactormonk 2012-03-27 15:09:04

+0

當然,我希望我的元組的分數與某個搜索查詢相關!對不起,我沒有提到。 – odaa 2012-04-02 09:50:49

回答

2

我想你的元組映射到Lucene索引的文檔。文件本身沒有與其相關的分數;它只會得到相對於特定查詢的評分。你想如何編碼你的元組的分數?作爲文件增強,或者可能是場增強的疊加(我假設你將元組成員映射到文檔字段)+文檔增強?

所以,你有一個元組和一個查詢Q(可能是一個複雜的),你需要對應於該元組索引的文檔的分數。首先使用簡單查詢(TermQuery的BooleanQuery)獲取該文檔的文檔ID;然後調用IndexSearcher.explain(Query,int) - 這會給你它的分數而不會實際執行Q.

+0

感謝您的回答!我認爲我的問題是在我的Lucene索引中搜索某個Document。我必須首先進行查詢搜索,並檢查我的文檔是否包含在結果中?這不是很有效率,是嗎?你說過我應該設置一個自定義的相似對象。那是爲了改變分數,不是嗎?但是我對正常分數沒有問題,我認爲......;)或者爲什麼我應該改變分數? – odaa 2012-04-02 09:48:20

+0

也許你只需要在使用Lucene時調整你的觀點。執行termQuery(或其布爾查詢)不是_searching_,而是_fetching_。它非常快。至於相似性,默認情況下,您會得到字段規範,詞頻和逆文檔頻率的影響。如果這就是您想要的,那麼您不需要自定義相似性。 – 2012-04-02 12:54:45

+0

是的,那更多是我想要的。 :)但我仍然不明白我如何才能得到與我的元組相關的特定文檔。如果我的元組有一個主鍵,但這並不是必需的,那將很容易。或者你說「簡單查詢」是什麼意思? – odaa 2012-04-03 13:43:19