2013-05-29 39 views
0

我使用的是lucene4.2並且有一個索引的文檔包含超過50個字段。 該指數包含約80萬個。文件大小爲11.5 GB。 每個查詢超過20秒。 是這樣的:lucene indexSearch.search性能

//Query: +(id:[3000000000000000000 TO 9000000000000000000]) +(devId:2 devId:3) 
long start = System.currentTimeMillis(); 
TopDocs topDocs = indexSearch.search(query,1000); 
long end = System.currentTimeMillis(); 
logger.info(end - start); 

這導致OutOfMemoryError而當JVM堆大小比1024M少。 我很困惑,爲什麼它需要太多的內存和時間。 如何在1秒內完成搜索?

+0

您是如何創建索引的? 80 mio。文件是80,000,000個文件?如果是這樣,1G內存可能不夠。 – zsxwing

+0

3奎寧到9奎寧是相當大的範圍,我認爲發現了很多點擊。如果你縮小範圍,你是否看到同樣的問題。 – femtoRgon

+0

這是我的parameter.mergeFactor 100 useCompoundFile false OPenMode.CREATE_OR_APPEND.You的意思是它會更快地分成多個索引?該ID不是自動增量,而是通過當前時間計算的。 –

回答

0

你是如何創建文檔域的?你存儲所有的領域?

它可能是您存儲的字段很大