2010-03-24 58 views
2

我想知道最好的方法是檢索由Lucene的搜索器返回的所有文檔的某個字段。檢索由Lucene搜索返回的所有文檔的某些字段的最佳方法

背景:每個文檔都有一個日期字段(寫在)上,我想顯示所有找到的文檔的時間表,因此我需要提取所有找到的文檔的日期(日期)字段。

我目前使用Searcher.doc(int,FieldSelector)檢索每個文檔,讓選擇器只檢索某個字段。

我已經索引了250k文檔,搜索本身沒有時間並返回大約10k文檔ID。

檢索那些需要20秒以上。

我能做些什麼來加快速度,但仍能獲得我需要的所有值?

回答

4

檢索字段值的更好方法是使用FieldCache。例如,如果字段值是字符串,則可以按如下檢索值。

String[] fieldValues = FieldCache.DEFAULT.getStrings(indexReader, "FieldName") 

顧名思義,這些值被緩存。這是後來的通話不花時間。您現在可以使用lucene文檔ID查找該數組,以檢索給定文檔的該字段的值。