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

好的,我发现了。如果有人感兴趣:longs 似乎在 Solr 4.0 中使用了不同类型的编码,所以我们可以像上面的代码一样将它们作为普通字符串处理,但稍后我们必须使用不同的解析器将 term 值转换为 long:

 FieldCache.NUMERIC_UTILS_LONG_PARSER.parseLong(term)

当没有更多元素存在时,它似乎会引发异常。至于现在它工作正常。

于 2012-12-17T16:52:00.260 回答