2013-07-08 67 views
1

我將LongField添加到索引中。Lucene:如何從索引獲取LongField

方法

IndexSearcher.doc() 

返回一個文件,其內的所有字段或者是

org.apache.lucene.document.Fieldorg.apache.lucene.document。 StoredField

如何從索引獲取文檔字段類型,因爲我投入。那麼我將這個文檔複製到另一個具有相同字段類型的索引。

回答

1

最後,我找到另一個方法IndexSearcher.doc(int, StoredFieldVisitor)(我使用Lucene 4.3)

,並創建一個自定義的StoredFieldVisitor

public class StaySameFieldVisitor extends DocumentStoredFieldVisitor { 
@Override 
public void intField(FieldInfo fieldInfo, int value) { 
    getDocument().add(new IntField(fieldInfo.name, value, Store.YES)); 
} 

@Override 
public void longField(FieldInfo fieldInfo, long value) { 
    getDocument().add(new LongField(fieldInfo.name, value, Store.YES)); 
} 

@Override 
public void doubleField(FieldInfo fieldInfo, double value) { 
    getDocument().add(new DoubleField(fieldInfo.name, value, Store.YES)); 
} 

@Override 
public void floatField(FieldInfo fieldInfo, float value) { 
    getDocument().add(new FloatField(fieldInfo.name, value, Store.YES)); 
} 

}