Solr lucene ResponseBuilder getFilters对int字段类型的编码错误
我得到了solr“int”字段类型的奇怪值。当列出ResponseBuilder过滤器时,我得到的countryId值如下。请注意,outletId字段的类型为String。这个问题发生在Solr模式中具有“int”类型的每个字段上Solr lucene ResponseBuilder getFilters对int字段类型的编码错误,solr,lucene,Solr,Lucene,我得到了solr“int”字段类型的奇怪值。当列出ResponseBuilder过滤器时,我得到的countryId值如下。请注意,outletId字段的类型为String。这个问题发生在Solr模式中具有“int”类型的每个字段上 List filters=rb.getFilters(); 设置curTerms=null; 对于(查询q:filters){ curTerms=newhashset(); q、 提取条款(简写); (任期:短期){ System.out.println(ter
List filters=rb.getFilters();
设置curTerms=null;
对于(查询q:filters){
curTerms=newhashset();
q、 提取条款(简写);
(任期:短期){
System.out.println(term.field()+“=”+term.bytes().utf8ToString());
}
}
知道是什么导致了这个问题吗
使用term.bytes()得到的是该术语的原始二进制表示形式。如果您可以将其转换为字符串相关字段的文本,则永远不会出现这种情况。
要显示术语,应首先将其原始值转换为整数,然后再尝试将其转换为字符串
你可能想看看
用于将字节[]转换为整数
要检索字节数组,term.bytes()。字节应与技巧一致
此外,term.bytes().utf8ToString()与term.text()等效
<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());
}
}