php - 自动完成电影名称

标签 php mysql lucene

我目前实现了 Jquery 自动完成功能,用于搜索电影名称。我让它以 2 个字符开头,中间有 150 毫秒的延迟。

我背后有一个 PHP 和 Mysql DB,它执行类似“%term%”的搜索来返回结果。

我发现这非常慢并且需要大量数据库。

我尝试使用 Mysql 的全文搜索,但运气不佳 - 也许我没有使用正确的匹配类型。

有人可以建议对 mysql 全文进行调整吗?或者我是否应该直接使用 Lucene 或 Sphinx 这样的索引解决方案,以及它们是否在仅包含 1-3 个字符的部分匹配上运行良好?

最佳答案

您受到数据库返回结果的速度的限制。我可以建议您遵循以加快速度。

  1. 不要为每个请求从 php 建立到 mysql 的新连接。启用数据库连接池。它大大提高了性能。我不知道如何在php中做连接池。 This可能会有所帮助。

  2. 如果可能的话,将结果缓存在 php 中,这样就不会每次都访问数据库。

  3. 使用外部服务来提供自动完成数据。看Autocomplete as a Service 。这可以减轻您编写自动完成后端的负担,产生更快的结果。

关于php - 自动完成电影名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223475/

相关文章:

php - Mysql 我正在合并表。但我不能做过滤排序

sql - 避免重复 SQL 代码?

即使没有批量索引,Elasticsearch 1.5.2 2 个节点中的高 JVM 堆

java - Solr 因在 org.apache.solr.core 上打开新搜索器时出错而停止

转义撇号中的PHP Mysql更新序列化数组

php - 为什么这个字符串回显 0?

java - 无法产生幻读

android - 使用计时器从 JSON 添加多个标记

c# - 避免在重建期间删除当前的 Lucene.NET 索引

javascript - 从头开始的 wordpress 主题不起作用