java - apache solr 使用了多少额外空间/RAM/CPU?

标签 java solr lucene full-text-search

我正在为我的网络应用程序使用 MySQL 数据库。 我需要搜索多个表和多个列,这与在这些列中搜索全文非常相似。

我需要了解您使用任何全文搜索 API(例如 solr/lucene/mapReduce/hadoop 等)的经验,而不是使用简单的 SQL:

  1. 速度表现
  2. 额外空间使用
  3. 额外的 CPU 使用率(是否持续构建索引?)
  4. 建立索引或准备好使用需要多长时间?
  5. 请告诉我您使用这些框架的经验。

非常感谢!

最佳答案

回答你的问题

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/

相关文章:

java - 谷歌播放服务 "Failed to sign in. Please check your network connection and try again"

Java启动CMD和多个命令而无需构建器

solr - 在所有 solr 字段中搜索值

ruby-on-rails - 在 Sunspot/Solr 中同时搜索多个模型以获取 Rails

java - 如何使用 QueryParser 执行包含特殊字符的 lucene 查询?

java - BigInteger 如何存储

java - 使用 Java 在 Eclipse 中正确读取资源

java - 正则表达式和文本到文本的搜索; Solr

lucene - LockObtainFailedException 使用 solr 更新 Lucene 搜索索引

java - Lucene 4.1.0 Porter Stemmer 无法正常工作