从 lucene.net 3.0 迁移到 4.8
Migrate from lucene.net 3.0 to 4.8
我们正在从 lucene.net 3.0 升级到 4.8。由于这些版本之间的重大更改,现在我们遇到了一些问题。
在我们的项目中,我们使用了 CustomScoreQuery
,它曾经是 Lucene.Net.Search.Function
命名空间的一部分。它不再存在。根据 Apache documentation 已弃用,应使用 FunctionScoreQuery
替换,但此 class 似乎在 4.8 中不存在。我们应该改用什么?
我们使用了继承自 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)
。所以这个问题似乎解决了
我们在 Lucene.Net.Search.Function
中使用了从 CustomScoreProvider
继承的 class,但在 4.8 中不再存在。我们将它与 CustomScoreQuery
结合使用作为 GetCustomScoreProvider
方法的返回值似乎没有任何替代方案。我们应该改用什么?
我们在 3.0 中使用了 WhitespaceAnalyzer,现在好像没有了。用什么来代替它?
有 some documentation,但不幸的是,迁移指南的 link 仍然是一个 TODO。
我也发布了我的问题 here,来自 lucene.net 的好心人回答了我所有的问题
我们正在从 lucene.net 3.0 升级到 4.8。由于这些版本之间的重大更改,现在我们遇到了一些问题。
在我们的项目中,我们使用了
CustomScoreQuery
,它曾经是Lucene.Net.Search.Function
命名空间的一部分。它不再存在。根据 Apache documentation 已弃用,应使用FunctionScoreQuery
替换,但此 class 似乎在 4.8 中不存在。我们应该改用什么?我们使用了继承自
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)
。所以这个问题似乎解决了我们在
Lucene.Net.Search.Function
中使用了从CustomScoreProvider
继承的 class,但在 4.8 中不再存在。我们将它与CustomScoreQuery
结合使用作为GetCustomScoreProvider
方法的返回值似乎没有任何替代方案。我们应该改用什么?我们在 3.0 中使用了 WhitespaceAnalyzer,现在好像没有了。用什么来代替它?
有 some documentation,但不幸的是,迁移指南的 link 仍然是一个 TODO。
我也发布了我的问题 here,来自 lucene.net 的好心人回答了我所有的问题