Heim >Backend-Entwicklung >PHP-Tutorial > 求解 关于站内搜索的有关问题

求解 关于站内搜索的有关问题

WBOY
WBOYOriginal
2016-06-13 13:33:501242Durchsuche

求解 关于站内搜索的问题
关于站内搜索 有几个小疑惑 请大家帮忙解释下

单关键字就不用说了 主要是多关键字,在多关键字搜索的时候是不是要把关键字分割成数组?如果是分割成数组(不能确定数组的长度,因为不知道用户会输入几个关键字),那么sql中的where该怎么写?

我看的教程是这样写的 

$sql = select * from bbs where title like '%$array[0]%' or content like '%$array[1]%';

如果是这样,那么如果title中有$array[1] , content中有$array[0]岂不是搜不出来?

------解决方案--------------------
如果对于小数据量,可以这样:
假设用户输入一堆关键字,按照空格(或逗号)分割成数组,假设叫$array
$sql=select * from tablename where 1=1 
foreach ($array as $value)
{
$sql.= and title like '%$value%' or content like '%$value%'
}
博主的这个sql 如果有几万的纪录跑起来,就相当吃力了。

数据库的like查询是便利所有的表纪录,时间复杂度是O(n)
如果数据多的话,考虑给title content分词,使用哈希表O1的效率下找到对应表的主键,再从数据库查询

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn