【发布时间】:2017-05-30 10:32:09
【问题描述】:
我们曾经使用 Query.clone() 方法来获取原始查询的克隆,并在克隆的查询中覆盖重写方法。
现在我发现 Query 类不再可克隆。知道为什么要进行更改以及现在完成克隆操作的更好方法吗?
【问题讨论】:
我们曾经使用 Query.clone() 方法来获取原始查询的克隆,并在克隆的查询中覆盖重写方法。
现在我发现 Query 类不再可克隆。知道为什么要进行更改以及现在完成克隆操作的更好方法吗?
【问题讨论】:
正如 5.4 中的弃用警告中所述,clone 仅对更改提升有用,因此它与 setBoost 和 getBoost 一起被删除。这三个都在 Lucene 5.4 中被弃用,并在 6.0 中被删除,或者为了使查询不可变(现在由 BoostQuery 处理提升)。有关完整讨论,请参阅 LUCENE-6590。
不过,我有点困惑。您声称您正在获取查询的克隆,然后在结果实例上覆盖重写方法?除非我在这里遗漏了什么,I don't believe that is possible. 如果您使用装饰器执行此操作,那么您没有理由仍然无法执行此操作,因为您实际上不需要克隆查询。
【讨论】:
setRewriteMethod(...)