我们有一个包含 100 万行的分类数据库,我们在其中进行了大量过滤搜索。我们不做任何关键字搜索(没有喜欢或任何东西),我们所做的只是根据条件(价格、房间数量、位置等)过滤行
由于我们没有进行任何关键字搜索,我在质疑我们是否应该使用搜索服务器?
有什么想法吗?
我们有一个包含 100 万行的分类数据库,我们在其中进行了大量过滤搜索。我们不做任何关键字搜索(没有喜欢或任何东西),我们所做的只是根据条件(价格、房间数量、位置等)过滤行
由于我们没有进行任何关键字搜索,我在质疑我们是否应该使用搜索服务器?
有什么想法吗?
这是一个常见的 MySQL 问题,因为 MySQL 全文搜索非常差,并且由于多种原因功能受限。几乎您提到的任何其他搜索技术都将极大地提升搜索功能、能力和速度。缺点是您必须维护一个单独的系统并保持索引同步,这可能会很痛苦/昂贵/容易出错。
这实际上是 PostgreSQL 真正大放异彩的一个领域,因为它内置的搜索功能广泛、高度可配置且非常快速。此外,可以使用简单的数据库触发器来保持索引的最新状态。
如果搜索是您系统的重要组成部分,并且您要搜索的所有内容都在数据库中,那么迁移到 PG 可能比学习/维护专用搜索引擎更有意义。
大多数搜索服务器不仅会搜索而且会比数据库更快地过滤大量数据。因此,如果您需要更好的性能,请使用搜索服务器。
要考虑的另一件事是开发成本:任何搜索服务器都需要一些努力来配置它并与系统集成。
我对 Sphinx 有一些经验,我喜欢它。现在我正在尝试将其实时索引与 ORM 集成并避免任何数据库过滤。Sphinx 将搜索和过滤数据,返回找到的 ID,而 InnoDB 将仅按 ID 选择数据(MySQL 尤其是 InnoDB 表做得非常快)。
问问自己“DB 性能对我们来说是否足够?” 并做出决定。