Lucene 或 Mysql 全文搜索 [关闭]

Posted

技术标签:

【中文标题】Lucene 或 Mysql 全文搜索 [关闭]【英文标题】:Lucene or Mysql Full text search [closed] 【发布时间】:2011-10-12 19:51:36 【问题描述】:

现在开始一个网络/移动应用项目时,搜索将成为一个重要的变量。是从一开始就使用 Lucene,还是快速部署基于 mysql 的解决方案并希望获得最好的结果?

【问题讨论】:

你能承受“最好的希望”吗? (不是反问) 只有您知道您是否可以“希望最好”,或者您的特定项目需要什么样的搜索量,以及其他变量。它们都是适合项目的有效解决方案。投票结束... 【参考方案1】:

我在 2010 年 11 月做出了同样的决定。我是 mysql 的朋友,并尝试先在 mysql 上构建一个搜索应用程序 - 效果很好...... ...而且很快(我认为它很快):搜索 200.000 个文档(不超过 2-3 秒)

我避免花时间在 lucene/solr 上,因为我想利用这段时间来开发应用程序。并且: lucene 对我来说是新的......我不知道,如果它足够好,我不知道它是什么...... 最后:你无法改变一生的习惯。

但是,我遇到了模糊搜索(这在 mysql 中难以实现)或“更像这样”(必须在使用 mysql 的应用程序中从 scrat 编码或简单使用“更像这样”的简单使用)的不同问题开箱即用的 solr 功能)。 最后文档的数量上升到一百万,mysql现在需要超过15秒才能搜索到文档。

所以我决定从 lucene 开始,感觉就像我打开了一扇通往新世界的大门。 现在从 solr 提供了很多功能(我几乎没有编写应用程序功能)并且开箱即用。全文搜索要快得多:在 100 万份文档中不到 50 毫秒,如果缓存的话,不到 1 毫秒。

所以投入的时间得到了回报。

因此,如果您考虑进行全文搜索:如果您有多个数据,请使用 lucene。 顺便说一句:我使用的是混合结构:将数据保存在 mysql 和 lucene 中只是一个(几乎)没有存储数据的索引(以保持该索引小而快)。

【讨论】:

【参考方案2】:

一般来说,如果您要进行全文搜索,您肯定需要 lucene 或 sphinx + mysql(或 lucene + mysql,将可索引字段存储在 lucene 中,并为 mysql 行返回一个 id)。它们中的任何一个都是很好的选择。

如果您要进行“正常”搜索(即:整数或字符列或日期),mysql 分区就足够了。

您需要指定要搜索的内容。以及你多久重新索引一次你的数据库(如果你要重新索引很多,我会选择 sphinx)

【讨论】:

【参考方案3】:

您正在询问是否使用 Lucene 或 MySQL。但是 Lucene 是一个库,而 MySQL 是一个服务器。你真的应该在 SOLR 搜索引擎和 MySQL 之间做出决定。在这种情况下,正确的答案很可能是两者。管理 MySQL 中的所有数据。运行流程以定期提取更改的数据,将其转换为 SOLR 搜索格式,并将其加载到搜索引擎中。使用 SOLR 比直接使用 Lucene 简单得多,如果您需要以某种方式修改行为,您仍然可以为 SOLR 编写插件,因此不会失去灵活性。

但是,尝试使用 SOLR 管理数据将是死亡之吻。读取-编辑-更新的循环与 SQL dbs 配合得很好,但这并不是 SOLR 的全部意义所在。 SOLR 是快速灵活的文本搜索。您可以在 SOLR 中粘贴图像 URL,以便使用非索引字段准备搜索结果。

【讨论】:

以上是关于Lucene 或 Mysql 全文搜索 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

利用lucene对mysql数据创建索引,提高全文检索速度

Lucene全文检索学习入门

Lucene全文检索学习入门

Elasticsearch 全教程--入门

原创Lucene001--介绍和入门

Lucene全文搜索原理与使用