2009-04-30 40 views
1

檢索所有的文件我用NIOFSDirectory大約10億個對象索引。Lucene的性能:從搜索器

當我檢索與MatchAllDocsQuery文件,其性能比其他類型的查詢的,如BooleanQuery顯著惡化。我跑了一些測試,性能差不多100倍。

因爲我只在最高的n個文件感興趣,無論如何,有沒有辦法從搜索目標檢索它們不使用MatchAllDocsQuery?

我也在考慮在對象的隨機屬性上使用WildcardQuery,但Lucene在Action聲稱存在與WildcardQuery關聯的「性能下降」。

建議是極大的讚賞!

+0

根據什麼前n個文件?如果你只是想要一個隨機樣本,我可以使用另一個樣本(可能是數據庫),或者爲每個文檔添加一個數字標識符,並在lucene之外進行隨機選擇,然後使用術語查詢。你有其他限制嗎?這似乎有點不妥。 – 2009-04-30 20:17:10

+0

你可以發佈代碼嗎?是Searcher.search()方法花費了100倍的時間嗎?我使用MatchAllDocsQuery,沒有任何重大的性能問題。 – bajafresh4life 2009-05-01 13:15:14

回答

1

由於尤瓦的評論指出,你有沒有指定的標準,以獲取最高的文件。如果您打算檢索隨機文檔,則只需使用IndexReader.document()即可,而不必進行任何搜索。如果您有一些條件,則可以使用TermQuery(或由QueryParser返回的查詢)。