1

インデックスにLongFieldを追加します。

方法

IndexSearcher.doc() 

すべてのフィールドが次のいずれかであるドキュメントを返します

org.apache.lucene.document.Fieldまたはorg.apache.lucene.document.StoredField

入力したのと同じフィールド タイプのインデックスからドキュメントを取得するにはどうすればよいですか。次に、このドキュメントを同じフィールド タイプの別のインデックスにコピーします。

4

1 に答える 1

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

}

于 2013-07-08T11:46:12.353 に答える