从 lucene.net 3.0 迁移到 4.8

Migrate from lucene.net 3.0 to 4.8

我们正在从 lucene.net 3.0 升级到 4.8。由于这些版本之间的重大更改,现在我们遇到了一些问题。

  1. 在我们的项目中,我们使用了 CustomScoreQuery,它曾经是 Lucene.Net.Search.Function 命名空间的一部分。它不再存在。根据 Apache documentation 已弃用,应使用 FunctionScoreQuery 替换,但此 class 似乎在 4.8 中不存在。我们应该改用什么?

  2. 我们使用了继承自 Lucene.Net.Search.Collector 的自定义收集器 class。在 4.8 中,此 class 已被密封。我看到有几个实现 classes。我应该使用哪一个?

    我发现我需要使用 ICollector 界面。这部分解决了问题。在 SetNextReader 函数中,我们用来做类似 Lucene.Net.Search.FieldCache_Fields.DEFAULT.GetStrings(reader, "<field>") 的事情。这也已被删除。显然我们需要使用 Lucene.Net.Search.FieldCache.DEFAULT.GetTerms(context.AtomicReader, "<fieldid>", false)。所以这个问题似乎解决了

  3. 我们在 Lucene.Net.Search.Function 中使用了从 CustomScoreProvider 继承的 class,但在 4.8 中不再存在。我们将它与 CustomScoreQuery 结合使用作为 GetCustomScoreProvider 方法的返回值似乎没有任何替代方案。我们应该改用什么?

  4. 我们在 3.0 中使用了 WhitespaceAnalyzer,现在好像没有了。用什么来代替它?

some documentation,但不幸的是,迁移指南的 link 仍然是一个 TODO。

我也发布了我的问题 here,来自 lucene.net 的好心人回答了我所有的问题