【问题标题】:Mysql Search vs. Search Tools (CloudSearch,Sphinx,Solr..) For NonText Searches用于非文本搜索的 Mysql 搜索与搜索工具(CloudSearch、Sphinx、Solr..)
【发布时间】:2013-07-21 03:21:09
【问题描述】:

我们有一个包含 100 万行的分类数据库,我们在其中进行了大量过滤搜索。我们不进行任何关键字搜索(没有 LIKE 或任何东西),我们所做的只是根据条件(价格、房间数量、位置等)过滤行

由于我们没有进行任何关键字搜索,我想问是否应该使用搜索服务器?

有什么想法吗?

【问题讨论】:

  • 也许它有助于详细说明您为什么认为“搜索服务器”可能是值得投资的。
  • 因为在 db 服务器上会有很多搜索,我们不想阻塞 db 中的 io。
  • 所以真正的“要求”只是“卸载”一些请求。你可以通过设置一个从数据库服务器来做到这一点。
  • 这就是问题所在。我应该添加越来越多的奴隶还是搜索服务器是一个更好的解决方案。
  • 我个人是 KISS 的粉丝。除非您有充分的理由使用某项技术(并且不清楚您是否这样做),否则请避免添加另一个系统的复杂性(然后需要维护)。

标签: search solr full-text-search sphinx amazon-cloudsearch


【解决方案1】:

这是一个常见的 MySQL 问题,因为 MySQL 全文搜索非常差,并且由于多种原因功能受限。几乎您提到的任何其他搜索技术都将极大地提升搜索功能、能力和速度。缺点是您必须维护一个单独的系统并保持索引同步,这可能会很痛苦/昂贵/容易出错。

这实际上是 PostgreSQL 真正大放异彩的一个领域,因为它内置的搜索功能广泛、高度可配置且速度非常快。此外,可以使用简单的数据库触发器来保持索引的最新状态。

如果搜索是您系统的重要组成部分,并且您要搜索的所有内容都在数据库中,那么迁移到 PG 可能比学习/维护专用搜索引擎更有意义。

【讨论】:

    【解决方案2】:

    大多数搜索服务器不仅会搜索而且会比数据库更快地过滤大量数据。因此,如果您需要更好的性能,请使用搜索服务器。

    要考虑的另一件事是开发成本:任何搜索服务器都需要一些努力来配置它并与系统集成。

    我对 Sphinx 有一些经验,我喜欢它。现在我正在尝试将其实时索引与 ORM 集成并避免任何数据库过滤。 Sphinx 将搜索和过滤数据,返回找到的 ID,InnoDB 将仅按 ID 选择数据(MySQL 尤其是 InnoDB 表做得非常快)。

    问问自己“DB 性能对我们来说是否足够?”并做出决定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 2013-12-12
      相关资源
      最近更新 更多