我为solr“int”字段类型获得了奇怪的值。列出ResponseBuilder过滤器时,我得到countryId的以下值。请注意,outletId字段的类型为String。 Solr架构中具有“int”类型
的每个字段都会发生此问题
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
List<Query> filters = rb.getFilters();
Set<Term> curTerms = null;
for (Query q : filters) {
curTerms = new HashSet<Term>();
q.extractTerms(curTerms);
for (Term term : curTerms) {
System.out.println(term.field() + " = " + term.bytes().utf8ToString());
}
}
知道可能导致这个问题的原因吗?
答案 0 :(得分:1)
使用term.bytes()得到的是该术语的原始二进制表示。如果你可以将它转换为字符串相关字段的文本,它将永远不会是这种情况。 要显示您的术语,您应首先将其原始值转换为Integer,然后再尝试将其转换为String
你可能想看看 http://docs.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html 用于将byte []转换为整数检索字节数组term.bytes()。bytes应该是技巧。
term.bytes()。utf8ToString()等同于term.text()