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

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

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

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

google或其他严重依赖此功能的大型网站有什么作用?

有帮助吗?

解决方案

我会尝试尽可能优化SQL查询:

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

    此外,在PHP方面:

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

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

      Zend_Search_Lucene非常适合中低流量的网站(据称在扩展时会出现问题)

其他提示

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

设置cron作业以索引数据,有用于sphinx的PHP API和Zend Framework Module。如果正确使用,索引速度会很快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top