0

我正在通过一个文本框进行实时搜索,当用户键入它时,它会从 mysql 数据库中返回匹配的行。问题是这是该站点的主要功能之一,并且确实增加了我的 mysql 数据库的内存负载。因为每次击键都会向 php 脚本发送一个请求以查询数据库。

我有 php 忽略任何少于 3 个字符的搜索词,但除此之外我还能做什么?

这里有一些选项: Javascript 中的实时搜索优化

但我想知道我是否应该从缓存的 xml 表中提取,或者是否有某种方法可以缓存 mysql 本身。

谷歌或其他一些严重依赖此功能的大型网站是做什么的?

4

2 回答 2

1

使用索引引擎来索引您的数据并加快搜索结果。喜欢:http ://sphinxsearch.com/或http://lucene.apache.org/core/

设置 cron 作业来索引数据,有用于 sphinx 的 PHP API 和 Zend 框架模块。如果使用正确,索引速度会大大提高。

于 2012-02-21T18:14:22.327 回答
0

我会尽量优化 SQL 查询:

  • 没有选择 *
  • 没有加入
  • 仅在索引字段中使用 WHERE

此外,在 PHP 方面:

  • 在纯文本文件中缓存最常搜索项的搜索结果(搜索数据更新越频繁,缓存寿命越短)
  • 尽可能使用 redis,memcached

另外,考虑一个并行的 NoSQL 数据库

Zend_Search_Lucene 非常适合中低流量站点(据报道在扩展时存在问题)

于 2012-02-21T18:25:11.610 回答