java - 如何使用lucene更新索引目录

标签 java lucene

我有一个java程序,它可以对一些文件进行索引和搜索关键字。我的 filestoindex 目录中有 10 个文件,正在为这些文件建立索引。当我第一次运行 IndexWriter 时,它显示已对 10 个文档建立了索引,但是当我下次运行它时,它显示它已对 20 个文档建立了索引。为了避免每次出现这种情况,我删除了索引目录并运行代码。当我这样做时,效果很好。请向我建议一种每次运行 IndexWriter 时更新索引目录的方法(不删除 indexdir 目录)。

indexDirectory = new File(indexFilePath);
FSDirectory dir = FSDirectory.open(D://filestoindex);
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_34);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_34, analyzer);
writer = new IndexWriter(dir, config);

最佳答案

您需要将IndexWriterConfig中的OpenMode设置为CREATE 。这将导致它在您打开 IndexWriter 时启动一个新索引,并覆盖旧索引(如果存在)。

IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_34, analyzer);
config.setOpenMode(IndexWriterConfig.OpenMode.CREATE);
writer = new IndexWriter(dir, config);

关于java - 如何使用lucene更新索引目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17206465/

相关文章:

java - 合并两个大列表的最有效方法

java - 是否有等效于 BCEL(Java .class 操作)但在 C 或 C++ 中

java - lucene BooleanQuery 等于/in

solr - 使用 ZooKeeper 在 SolrCloud 中配置 DataImportHandler

java - IKVM - 无法将 jar 转换为 dll

java - 如何获取泛型的类型

java - 使用 Morphia 获取 @reference 实体时出错

java - 如何使用 lucene 进行词形还原和消除空法语单词

java - 指南针在搜索查询中返回 0 行且包含 “#”(哈希字符)

search - 在 Elasticsearch 中索引地理空间会导致错误?