我会在从 v3 迁移到最新 v7 的迁移 lucene 索引中获得性能改进吗
Posted
技术标签:
【中文标题】我会在从 v3 迁移到最新 v7 的迁移 lucene 索引中获得性能改进吗【英文标题】:Will i get performance improvement in migration lucene index from v3 to latest v7 【发布时间】:2018-11-14 16:16:17 【问题描述】:我们的应用程序正在索引书籍。当我们索引时,磁盘上的大小约为 1GB。当我们搜索时,大约需要 12-18 秒。
此应用程序是使用 Lucene 3.x.x 构建的。如果我迁移到 Lucene 7.x.x,我会获得性能提升吗?
我问是因为应用程序非常大,分离这部分功能是一项非常艰巨的任务,所以希望有经验的人帮忙。
我还看到代码中使用的许多类在 Lucene-7 中不可用。我该如何迁移?我是否需要像 v3 -> v4 -> v5 -> v6 ->v7 那样进行增量迁移?
【问题讨论】:
您的索引是什么样的(有多少字段,什么类型等)? 1GB 很小,那么你想要达到什么样的性能呢?目前的瓶颈在哪里? (您的搜索时间似乎异常缓慢)您处理了多少次点击?你也得到文档吗?等 12 到 18 秒来搜索 1GB 听起来好像有问题。我们在谈论多少个文件?这通常应该是一个不到 50 毫秒的操作。 【参考方案1】:我会看到迁移到 Lucene 7.0 的性能改进吗
不可能肯定地说,但很可能你会。自 Lucene 3 以来,性能有了相当大的改进。您可以浏览 Lucene benchmarks,在此处向后滚动,您会看到自 v3 以来的大部分改进。
改进是否足够是另一个问题。您应该首先查看的是,如果您使用的查询通常表现不佳,以及如何才能做得更好。如果您使用大量领先的通配符查询,那么更新版本的 Lucene 不会神奇地将您从自己手中拯救出来。
如何迁移?
自 Lucene 3 以来的 7 年中发生了很多变化。获取阅读器或编写器已经发生了变化,甚至文档和字段的工作方式也不尽相同!最好的办法是熟悉迁移指南,其中列出了可能会破坏您的代码的更改以及如何处理它们:
4.0 Migration Guide 5.0 Migration Guide 6.0 Migration Guide 7.0 Migration Guide我是否需要进行增量迁移
有这么多版本要通过,如果可能的话,我宁愿重新索引,但如果这不是一个选项,是的,你需要一次升级你的索引一个主要版本。命令行IndexUpgrader 工具是您需要执行的操作,它仅从上一个主要版本升级。所以,是的,您需要下载 lucene 4,运行 IndexUpgrader 以获得 4.0 索引,然后使用 Lucene 5 重复,等等。
【讨论】:
以上是关于我会在从 v3 迁移到最新 v7 的迁移 lucene 索引中获得性能改进吗的主要内容,如果未能解决你的问题,请参考以下文章
从 v7.2.1 迁移到 flutter_bloc v 8.0.0 后不会触发 flutter_bloc 事件
从 .NET Core 2.1 迁移到 v3.1 后出现“被 CORS 阻止”错误