目前我正在使用 Lucene 3.6,但很难让 IndexWriters 工作。
API 文档建议:
IndexWriter writer = new IndexWriter(Directory, Analyzer);
(以及其他一些类似的构造函数)已被贬值,我应该使用类似的东西:
IndexWriter writer = new IndexWriter(Directory, Configuration);
但是 eclipse 不会识别这个较新的构造函数(lucene-core3.6.jar 被添加到我的项目的构建路径中),并且如果我使用较旧的构造函数,我必须抑制警告(我不是特别想这样做 - 当我使用这些较旧的方法在内存中建立索引时会抛出异常)。
我已经清理了该项目,但问题仍然存在。
编辑:我正在使用的代码:
Directory index = new RAMDirectory();
StandardAnalyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);
IndexDeletionPolicy IndexDeletionPolicy = new KeepOnlyLastCommitDeletionPolicy();
MaxFieldLength fieldLength = new MaxFieldLength(256);
IndexWriter writer = new IndexWriter(index, analyzer, false, IndexDeletionPolicy, fieldLength);
//IndexWriter writer = new IndexWriter(index, config);
writer.setUseCompoundFile(false);
最佳答案
阅读 javadoc 是一个好的开始:
http://lucene.apache.org/core/3_6_0/api/all/index.html
构造函数
构造函数和描述
IndexWriter(目录 d, 分析器 a, boolean 创建, IndexDeletionPolicy 删除策略, IndexWriter.MaxFieldLength mfl) 已弃用。使用 IndexWriter(Directory, IndexWriterConfig) 代替
IndexWriter(目录 d, 分析器 a, boolean 创建, IndexWriter.MaxFieldLength mfl) 已弃用。使用 相反,使用 IndexWriter(Directory, IndexWriterConfig)
IndexWriter(目录 d, 分析器 a, IndexDeletionPolicy 删除策略、IndexWriter.MaxFieldLength mfl) 已弃用。使用 相反,使用 IndexWriter(Directory, IndexWriterConfig)
IndexWriter(目录 d, 分析器 a, IndexDeletionPolicy 删除策略、IndexWriter.MaxFieldLength mfl、IndexCommit 提交) 已弃用。使用 IndexWriter(Directory, IndexWriterConfig) 代替
IndexWriter(目录 d, 分析器 a, IndexWriter.MaxFieldLength mfl) 已弃用。使用 IndexWriter(Directory, IndexWriterConfig) 代替
IndexWriter(Directory d, IndexWriterConfig conf) 根据conf中给定的设置构造一个新的IndexWriter。
毫不奇怪,您使用的是已弃用的构造函数,并且 Eclipse 正确地发出警告。如果您使用最后一个构造函数,我确信 Eclipse 不会发出警告。
关于java - Lucene 3.6 索引编写器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11435638/