0

私はSOLR 4.0のリクエストハンドラーを書いています。タイプのフィールドのすべての一意の値を取得しようとしていますtlong(フィールドはもちろんインデックスされています)。

tstring フィールドの一意の用語をすべて取得しようとするときはいつでも、次のコードを使用できます。

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

次に、すべての一意の用語を繰り返し処理し、すべての用語で実行すると、正常utf8ToString()に機能します。

フィールドに対して同じことをしようとすると、tlong結果が文字化けします-返される用語の数は一意の値の数とは異なり、値自体はまったく表現Longされません(値の長さが異なるなど..)。

フィールドの一意の値のリストを取得する別の方法はありtlongますか?

4

1 に答える 1

0

わかりました、私はそれを見つけました。興味のある方は、Solr 4.0 では long は異なるタイプのエンコーディングを使用しているように見えるため、上記のコードのように通常の文字列として扱うことができますが、後で別のパーサーを使用して項の値を long に変換する必要があります。

 FieldCache.NUMERIC_UTILS_LONG_PARSER.parseLong(term)

これ以上要素が存在しない場合、例外がスローされるようです。今のところ、問題なく動作しています。

于 2012-12-17T16:52:00.260 に答える