如何设计一个查询速度非常快的搜索引擎?

Posted

技术标签:

【中文标题】如何设计一个查询速度非常快的搜索引擎?【英文标题】:How can design search engine that can query very fast? 【发布时间】:2021-11-30 06:39:27 【问题描述】:

我正在根据条件搜索设计搜索引擎的架构。 每条记录都包含多个列,可以是字符串、数字、日期……而且我想使用基于条件的查询尽可能快地查询记录。 (客户将根据他的过滤器/查询查询以查看当前记录) 例如: query = (record.date > sysdate - 5 AND record.name like '%TEST%') OR (record.priority > 2 AND record.date > sysdate -2)...

最好的方法是什么?

我考虑过使用 elasticsearch,但它对客户端来说是否足够快? 应该注意的是,系统是动态的,记录总是在变化、添加和删除。另外,系统中存储了很多记录。

【问题讨论】:

您打算花多少钱来实现这一目标? 100,000 美元?一百万?更多的?您花费的金额将影响我们可以建议的解决方案。 您能提出您能想到的最佳解决方案吗? @吉尔伯特勒布朗 环境可以是分布式系统,但没有google那么大,我想5台服务器就可以了..我想支持1000万条记录的db,以及几个不同的查询,大约300个。跨度> 那么你将不得不做谷歌所做的事情。创建一个用户看不到的主数据库,并将其复制到您的五台服务器。您可以不断更新您的主数据库,并按计划复制它,以便您的用户了解他们的数据库副本中的数据有多旧。 @GilbertLeBlanc 但这不是问题,问题是我如何使查询快速?如果查询条件很复杂(例如有很多类似 '%%'),用户会注意到它.. 【参考方案1】:

基于帖子和 cmets,我认为 Elasticsearch 可以很好地解决这个问题

如何快速? 确保您的映射和查询已优化 为集群提供充足的硬件资源 监控您的集群和查询

【讨论】:

以上是关于如何设计一个查询速度非常快的搜索引擎?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库引擎

5种让Hive查询变快的方法

一个SQL有时执行速度很快有时很慢,请问处理思路

二DDL 数据表

js的模糊查询

SqlServer——全文索引