网站如何进行全文搜索和排序?

时间:2018-01-19 09:22:06

标签: full-text-search full-text-indexing

网站如何实施搜索和排序? (例如:电子商务搜索产品并按价格排序)

我一直在和这个摔跤。我正在使用MySQL,经过长时间的讨论here,似乎MySQL无法解决这个问题。我也在这里问here posgres是否可以做到这一点,而且似乎答案是肯定的。

那么网站是如何做到的呢?

编辑:要明确的是,我问网站是如何以一种使用全文搜索和某种BTREE索引进行排序的方式进行的。要在不使用其中一个索引的情况下进行全文搜索和排序很容易(虽然很慢)。

1 个答案:

答案 0 :(得分:1)

我曾在一家使用SQL Server全文搜索的大型电子商务网站上工作。从概念上讲,全文搜索引擎将生成一个id列表,这些id将与b树索引连接以返回排序结果。性能是可以接受的,但是我们用当时最大的硬件(80 cpu,512 GB RAM等)尽可能地推动它。使用20-25百万个文档,简单的全文查询(2-3个术语)将在3-5秒范围内具有响应时间。那是历史数据。实时数据集(大约100万份文档)平均200ms,分布广泛。我们每秒能够处理150-200个查询。

我们最终离开SQL Server进行搜索,因为我们想要SQL Server没有提供的额外全文功能,特别是对结果进行高度可调的相关性排序。我们研究了各种选项,并确定了在aws上托管的弹性搜索。

弹性搜索功能大幅提升。表现很棒。我们在aws上运行了4个xlarge实例。查询响应时间大约为150-175毫秒,非常非常一致。我们可以轻松地扩大/缩小节点数量,以保持性能与不同的负载量保持一致。

SQL Server仍然是记录系统。我们必须开发几种服务来将更改从SQL Server推送到ES(增量加载,批量加载等)。将SQL搜索逻辑转换为ES是直截了当的。

总之,如果您的数据库无法满足您的搜索需求,那么请使用可以使用的工具(elasticsearch)。