我遇到了一个与Google Suggest非常相似的网站。当您在搜索框中键入2个字符时(例如,如果您正在搜索“canon”产品,则为“ca”),它会产生4个Ajax请求。每个请求似乎都在不到125毫秒的时间内完成。我随便观察到Google Suggest需要500毫秒或更长时间。
在任何一种情况下,两个网站都很快。 为了获得超快的请求/响应,应该遵循哪些一般概念/策略?谢谢。
编辑1:顺便说一句,我计划为电子商务网站搜索实现自动完成功能,其中1.)根据所输入的内容提供搜索建议,以及2.)基于潜在产品匹配的列表到目前为止输入的是什么。我正在尝试类似于SLI Systems搜索的内容(例如,请参阅http://www.bedbathstore.com/)。
答案 0 :(得分:9)
这有点像“一段字符串有多长”的问题,因此我将其作为社区维基的答案 - 每个人都可以随意加入。
我说这是确保:
的问题答案 1 :(得分:2)
您需要一个能够快速响应的Web服务器,但这通常不是问题。您还需要一个快速的数据库服务器,并且可以非常快速地查询哪些热门搜索结果以“ca”开头。 Google根本没有使用传统数据库,而是使用大型服务器集群,类似Cassandra的数据库,并且大部分数据都保存在内存中以便更快地访问。
我不确定你是否需要这个,因为只使用运行PHP和MySQL的单个服务器就可以获得相当不错的结果,但是你必须对存储和检索它的方式做出一些很好的选择。信息。如果您运行如下查询,则不会获得这些快速结果:
select
q.search
from
previousqueries q
where
q.search LIKE 'ca%'
group by
q.search
order by
count(*) DESC
limit 1
只要不到20人使用过您的搜索,这可能会有效,但在您达到100.000之前可能会失败。
答案 2 :(得分:1)
您可以从为您的产品执行快速搜索引擎开始。查看Lucene的全文搜索。它可用于PHP,Java和.NET等。
答案 3 :(得分:1)
此链接说明了他们如何制作instant previews fast。整个网站highscalability.com是一个信息丰富的网站。
此外,您应该将所有内容存储在内存中,并且应该避免从光盘中检索数据(慢!)。例如Redis闪电般快!