首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网站如何进行全文搜索和排序?

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

Stack Overflow用户
提问于 2018-01-19 17:22:06
回答 1查看 261关注 0票数 0

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

我已经为这个问题挣扎了一段时间了。我使用的是MySQL,经过长时间的讨论,here似乎MySQL无法处理这个问题。我在这里也问过here,posgres是否可以做到这一点,而且似乎答案是否定的。

那么网站如何做到这一点呢?

编辑:为了清楚起见,我问的是网站是如何使用全文搜索和某种BTREE索引进行排序的。在不使用任何索引的情况下进行全文搜索和排序将会很容易(尽管速度较慢)。

EN

回答 1

Stack Overflow用户

发布于 2018-02-23 06:37:13

我在一家大型电子商务网站工作,该网站使用SQL Server全文搜索来实现这一点。从概念上讲,全文搜索引擎将生成一个ids列表,该列表将与b-tree索引连接以返回排序的结果。性能是可以接受的,但我们尽可能使用当时可用的最大硬件(80CPU、512 GB RAM等)。对于2000-2500万个文档,一个简单的全文查询(2-3个术语)的响应时间将在3-5秒范围内。这是为了历史数据。实时数据集(大约100万个文档)平均为200ms,分布范围很广。我们每秒能够处理150-200个查询。

我们最终放弃了SQL Server进行搜索,因为我们需要SQL Server不提供的其他全文功能,特别是对结果进行高度可调的相关性排序。我们研究了各种选择,最终选择了托管在aws上的elastic search。

Elastic search在功能上提供了实质性的改进。表现很棒。我们在aws上使用了4个xlarge实例。查询响应时间在150-175ms左右,而且非常一致。我们可以轻松地扩展/缩小节点数量,以保持性能与不同的负载量保持一致。

SQL Server仍然是记录系统。我们必须开发几个服务来将更改从SQL Server推送到ES (增量加载、批量加载等)。将SQL搜索逻辑转换为ES非常简单。

总而言之,如果您的数据库不能满足您的搜索需求,那么使用一个可以满足您的需求的工具(elasticsearch)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48337746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档