设置lucene字段的索引属性?

时间:2013-06-01 01:26:25

标签: java lucene

我有第三方制作的大量lucene指数。

我想搜索未编入索引的字段。是否可以使用现在已编入索引的字段重新创建索引?

2 个答案:

答案 0 :(得分:0)

我假设该字段存储正确?如果没有,那你就不走运了。

如果存储,你有几个选项,我认为最简单的选择是:

  1. 将所有文档转储为csv输出(see here

  2. 将该字段的架构更改为indexed = true

  3. 然后重新索引所有这些(csv输出也可以用于更新)

答案 1 :(得分:0)

解决了我自己,只使用索引阅读器和编写器。 如果这是正确的方式,我不知道。该字段是一个字符串字段(存储),因此对于这种情况,它只是起作用。

IndexReader reader = IndexReader.open(...);
IndexWriter writer = new IndexWriter(...);

for(int i = 0; i < reader.maxDoc(); i++) {
    if(reader.isDeleted(i)) continue;
    Document d = reader.document(i);
    Document d2 = new Document();
    for(Field f : (List<Field>)d.getFields()) {
        Field f2 = f;
        if(f.name().equals(FIELD_NAME))
            f2 = new Field(FIELD_NAME, f.stringValue(), Field.Store.YES, Field.Index.NOT_ANALYZED);
        d2.add(f2);
    }
    writer.addDocument(d2);
}

writer.optimize();
writer.close();