我正在为我的网络应用程序使用 MySQL 数据库。 我需要搜索多个表和多个列,这与在这些列中搜索全文非常相似。
我需要了解您使用任何全文搜索 API(例如 solr/lucene/mapReduce/hadoop 等)的经验,而不是使用简单的 SQL:
- 速度表现
- 额外空间使用
- 额外的 CPU 使用率(是否持续构建索引?)
- 建立索引或准备好使用需要多长时间?
- 请告诉我您使用这些框架的经验。
非常感谢!
最佳答案
回答你的问题
1.) 我有一个包含大约 500 万个文档的数据库。 MySQL 全文搜索需要 2-3 分钟。 Solr/Lucene 进行同一轮搜索需要大约 200-400 毫秒。
2.) 您需要的空间取决于您的配置、复制域的数量以及您是存储数据还是仅索引数据。在我的配置中,完整的数据库被索引,但只有元数据被存储。所以一个 30GB 的数据库需要 40GB 用于 Solr/Lucene。请记住,如果您想(重新)优化您的索引,您需要再次临时使用 100% 的索引大小。
3.) 如果您从 MySQL 全文索引迁移到 Lucene/Solr,您可以节省 CPU 功率。使用 MySQL 全文搜索比 Solr 全文搜索需要更多的 CPU 能力 -> 查看答案 1。)
4.) 取决于文件的数量、文件的大小和磁盘速度。当然CPU性能很重要。在索引时间期间,多个 CPU 的缩放比例不佳。 2 个大核比 8 个小核快得多。 在我的环境中索引 500 万个文档 (44GB) 在双核 VM ware 服务器上需要 2-3 小时。
5.) 从 MySQL Fulltext-Index 迁移到 Lucene/Solr Fulltextindex 是最好的主意。 ;-) 但您可能必须重新设计您的应用程序。
//编辑以回答“Lucene 索引是否会在一些 Insert 语句后立即更新”的问题
这取决于您的 SOlR 配置,但这是可能的
关于java - apache solr 使用了多少额外空间/RAM/CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8709997/