我正在为从数据库获取的值创建一个Lucene索引.我把Index OpenMode
设为OpenMode.CREATE_OR_APPEND
.
索引创建步骤是Spring Batch Job的一部分.
我的理解是,当我第一次运行作业时,索引可能需要一段时间,但是当我再次为相同的未更改的源数据重新运行作业时,它应该很快,因为文档已经存在,因此没有执行UPDATE OR INSERT.
但对于我的情况,后续索引尝试相同的未更改的源数据变得越来越慢.
回答这个问题说它会根据一个术语自动处理.
我不确定如何在我的案例中定义术语来处理这个问题?
以下是我的示例代码,
public Integer createIndex(IndexWriter writer, String str, LuceneIndexerInputVO luceneInputVO) throws Exception {
Integer count = 0;
Document d = null;
txtFieldType.setTokenized(false);
strFieldType.setTokenized(false);
List<IndexVO> indexVO = null;
indexVO = jdbcTemplate.
query(Constants.SELECT_FROM_TABLE1,
new Object[] {luceneInputVO.getId1(), luceneInputVO.getId2(), str},
new IndexRowMapper());
while (!indexVO.isEmpty()) {
d = new Document();
d.add(getStringField(Constants.ID, String.valueOf(luceneInputVO.getId())));
.....
....
writer.addDocument(d);
indexVO.remove(indexVO.get(count));
count++;
}
return count;
} …
Run Code Online (Sandbox Code Playgroud)