过去有三个构造函数,例如

IndexWriter(String, Analyzer, boolean)
IndexWriter(String, Analyzer, boolean)
IndexWriter(Directory,Analyzer, boolean)


但是现在只有一个构造函数,这会带来一些不便,那么为什么要删除其他两个构造函数呢?

这种不良的api设计会删除两个构造函数吗?

最佳答案

简短的回答:随着时间的推移,IndexWriter构造函数策略的总体变化主要是为了减少构造函数选项的泛滥,并更好地封装所使用的选项,以便可以共享和重用它们。

更长的答案:您引用的三个arg构造函数(目录/字符串/文件,分析器,布尔值)在Lucene 2.4中被弃用,该版本于2008年10月11日发布,然后在Lucene 3.0中删除(2009年11月26日)

底线:整整一年的时间里,这些构造函数最终都消失了,并且在将近3年前发布的版本中将它们删除了。

如果您有兴趣升级到非古代版本的Lucene,并且最大的抱怨是您的三个arg IndexWriter构造函数不再存在,则只需更改如下所示的代码即可...

IndexWriter w = new IndexWriter(dir, analyzer, true);


...看起来像这样...

IndexWriterConfig c = new IndexWriterConfig(Version.LUCENE_36,analyzer).setOpenMode(CREATE_OR_APPEND)
IndexWriter w = new IndexWriter(dir, config);


...但是我建议您不要仅仅盲目地进行更改,而应该查看IndexWriterConfig的文档,并考虑一些可用的各种选项。

09-25 21:39