2011-09-27 40 views
1

在lucene的3.1我有一個大的布爾查詢,即我執行像這樣丟失:Lucene的文件得分出現之後搜索

IndexSearcher的是=新IndexSearcher的(MYDIR); is.search(query,10);

我得到10個結果就好,但它們按docId排序,並且不包含得分信息。我可以找到的所有文檔都說,默認情況下,lucene按相關性/分數排序,但對我而言情況並非如此。如果我要求解釋,沒有得分信息,只是「0.0」。有趣的是,如果我在Luke的同一個索引中執行相同的查詢,我會得到一個按分數排序的結果,但我看不到如何讓分數保持並在從應用程序啓動時用於排序。所以我相信這個查詢很好,看看它在盧克的運作情況。

我在做什麼錯?我也嘗試設置is.setDefaultFielsSortScoring(true,true),但這沒有什麼區別。我嘗試使用TopScoreDocColletor沒有成功。

+0

嗯...似乎我知道太少我所嘗試的lucene。對於Float.MAX_VALUE的1個查詢,我有一個提升因子......因爲它的確切命中率高於其他所有。把它降低到10,就會使評分重新出現。任何人都可以解釋爲什麼這是? (而且它仍然讓我感到困惑,盧克在高提升的情況下讓搜索很好) – user966217

回答

1

看看Lucene scoring,特別是查詢規範。如果其中一個權重爲Float.MAX_VALUE,則其他一切都將接近零以至於它小於機器精度。