Однажды я использовал Lucene 2.9.2, и там я использовал подход с FieldCache, описанный Мэннингом в книге "Lucene in Action":
String[] fieldValues = FieldCache.DEFAULT.getStrings(indexReader, fieldname);
Массив fieldValues
содержит все значения в индексе для поля fieldname
(Пример: ["NY", "NY", "NY", "SF"]
), так что теперь вам решать, как обрабатывать массив. Обычно вы создаете HashMap<String,Integer>
, который суммирует вхождения каждого возможного значения, в данном случае NY = 3, SF = 1.
Может быть, это помогает. Он довольно медленный и занимает много памяти для очень больших индексов (1.000.000 документов в индексе), но работает.