java为什么lucene 4.0删除IndexWriter类的两个构造函数?
过去有三个构造函数,例如
IndexWriter(String, Analyzer, boolean)
IndexWriter(String, Analyzer, boolean)
IndexWriter(Directory,Analyzer, boolean)
但是现在只有一个构造函数,这带来了一些不便,那么为什么要删除另外两个构造函数呢
这种糟糕的api设计是为了删除这两个构造函数吗
你可以在下面搜索框中键入要查询的问题!
过去有三个构造函数,例如
IndexWriter(String, Analyzer, boolean)
IndexWriter(String, Analyzer, boolean)
IndexWriter(Directory,Analyzer, boolean)
但是现在只有一个构造函数,这带来了一些不便,那么为什么要删除另外两个构造函数呢
这种糟糕的api设计是为了删除这两个构造函数吗
# 1 楼答案
实际上,Lucene 3.0.3中有5 constructors (not 3) for IndexWriter,这是IndexWriterConfig出现之前的最后一个GA发行版本。下面是original ticket about the change(即IndexWriterConfig和删除其他构造函数的建议)。靠近票子顶部的讨论链接不再有效,而是Nabble has a copy of it
“这种糟糕的api设计是为了删除这两个构造函数吗?”这是一个不限成员名额的问题。在任何情况下,如果你想知道Lucene开发人员在做出特定决策时的意图,没有比直接询问Lucene开发人员(即在official Lucene mailing lists上)或在Lucene issue-tracking system上开罚单更好的方法了
如果我要推测,这里有一些可能性:
如果你问我,那么不,我不认为这是“糟糕的API设计”。期望他们永远保持每个方法调用的完整性是不合理的。他们确实有一个向后兼容性策略,我理解其中的一部分,因为他们可以拒绝任何需要的东西,但在下一个主要版本之前,他们不会删除或破坏任何东西。最糟糕的一个?我认为它比其他一些流行的项目要好得多,这些项目在点版本之间没有可比的策略和/或更改行为(即使没有修复bug)
# 2 楼答案
简短回答:随着时间的推移,IndexWriter构造器策略的总体变化主要是减少构造器选项的扩散,并更好地封装正在使用的选项,以便它们可以共享&;重复使用
详细回答:您所指的三个arg构造函数(目录/字符串/文件、分析器、布尔值)在2008年10月11日发布的Lucene 2.4中被弃用,然后在Lucene 3.0(2009年11月26日)中被删除
一句话:有整整一年的通知说,这些建设者最终离开了,他们在3年前发布的一个版本中被移除
如果您对升级到Lucene的非古代版本感兴趣,并且您最大的抱怨是您的three-arg IndexWriter构造函数不再存在,那么只需更改代码,如下所示
。。。所以看起来像这样
。。。但我建议,不要盲目地进行更改,而是查看DexXWrror CONFIG的文档,并考虑现在可用的各种选项。p>