我要在网站上添加简单的实时搜索(在输入框中输入文字时的提示)。
主要任务:
我担心以下问题:
任何链接/建议都会非常有用。
由于
P.S。可能这是最好的解决方案吗? PHP to search within txt file and echo the whole line
答案 0 :(得分:2)
将您的数据放入数据库(SQLite
应该没问题,但您也可以使用更重要的RDBMS,如MySQL
或Postgres
),并将索引放在要搜索的一列或多列。
只做绝对最小值,这意味着你不应该使用框架,ORM等。它们只会减慢你的代码。
创建一个PHP文件,获取搜索文本并使用本机PHP驱动程序执行SELECT
查询,例如SQLite
,MySQLi
,PDO
或类似。< / p>
另外,请考虑搜索框的工作方式。您可以阻止许多请求,例如:设置最小字符限制(仅搜索一个或两个字符没有意义),在发送请求之间设置一个短暂的延迟(这样就不会发送从未使用过的请求),等等。
是否使用Solr等扩展程序取决于您的具体情况。如果你有很多数据和很多请求,那么也许你应该研究一下。但如果问题可以通过一个简单的解决方案来解决,那么你应该在使它变得更复杂之前尝试一下。
答案 1 :(得分:1)
过去,我使用Zend search Lucene取得了巨大成功。
这是一个完全用PHP 5编写的通用文本搜索引擎。它管理你的源代码索引并且非常快(根据我的经验)。它支持许多查询类型,搜索字段,搜索排名。
答案 2 :(得分:1)
我已多次实施“实时搜索”,总是使用AJAX查询数据库(MySQL),并且还没有/观察到任何速度或大负载问题。
无论如何,我看到使用Solr的实现,但无法建议它是更快还是消耗更少的资源。
它完全取决于服务器将运行的硬件,IMO。正如我在某处写的那样,我看到一个文件系统非常慢的服务器,因此在从txt文件(或使用Solr)读取和解析时实现实时搜索可能比查询数据库时要慢。另一方面,您可以使用缓慢的数据库连接来托管糟糕的共享虚拟主机(通过更多并发连接会变得更慢),因此这不是最佳解决方案。
我的建议:将MySQL与AJAX一起使用(查看this jquery plugin或this article),在搜索到的列上设置正确的INDEX
es,如果发现这种情况很慢你仍然可以移动到txt文件。