2014-03-24 48 views
0

我得到solr「int」字段類型的奇怪值。當列出ResponseBuilder篩選器時,我得到了countryId的下面的值。請注意,outletId字段的類型是String。這個問題是每場Solr模式與「INT」類型lucene ResponseBuilder getFilters錯誤編碼爲int字段類型

term field and its value

<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()); 
    } 
} 

任何想法什麼可能導致這個問題發生?

回答

1

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.lucene/lucene-core/4.0.0/org/apache/lucene/index/Term.java#Term.text%28%29

你使用term.bytes(GOT)這個術語的原始二進制表示。如果您可以將其轉換爲字符串相關字段的文本,則永遠不會如此。 要顯示你的任期應先轉換它的原始值轉換成整數試圖將其轉換爲字符串之前

你可能想看看 http://docs.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html 爲一個byte []轉換爲整數

來檢索字節數組term.bytes()。bytes應該是這個技巧。

此外term.bytes()。utf8ToString()等價於term.text()

相關問題