SOLR 4.0: получить уникальные поля LONG в коде requestHandler

Я пишу обработчик запросов для SOLR 4.0 и пытаюсь получить все уникальные значения поля типа tlong (поле, конечно, индексируется).

Всякий раз, когда я пытаюсь получить все уникальные термины для поля tstring, я могу просто использовать следующий код:

DocTermsIndex sourceIndex=FieldCache.DEFAULT.getTermsIndex(searcher.getAtomicReader(), "txtField")      
TermsEnum terms=sourceIndex.getTermsEnum()

Затем я могу перебрать все уникальные термины, выполнить utf8ToString() для каждого термина, и он работает нормально.

Когда я пытаюсь сделать то же самое для поля tlong, я получаю искаженные результаты - количество возвращаемых терминов отличается от количества уникальных значений, а сами значения никак не представляют Long (разные длины значений и т. д.).

Есть ли другой способ получить список уникальных значений для поля tlong?


person Pma    schedule 17.12.2012    source источник


Ответы (1)


Хорошо, я узнал это. Если кому-то интересно: кажется, что longs используют другой тип кодирования в Solr 4.0, поэтому мы можем обращаться к ним как к обычным строкам, как в приведенном выше коде, но позже нам придется использовать другой парсер для преобразования значения термина в long:

 FieldCache.NUMERIC_UTILS_LONG_PARSER.parseLong(term)

Кажется, что возникает исключение, когда больше нет элементов. На данный момент работает нормально.

person Pma    schedule 17.12.2012