我有第三方制作的大量lucene指数。
我想搜索未编入索引的字段。是否可以使用现在已编入索引的字段重新创建索引?
答案 0 :(得分:0)
我假设该字段存储正确?如果没有,那你就不走运了。
如果存储,你有几个选项,我认为最简单的选择是:
将所有文档转储为csv输出(see here)
将该字段的架构更改为indexed = true
然后重新索引所有这些(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();