> 백엔드 개발 > PHP 튜토리얼 > 求解 关于站内搜索的有关问题

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

WBOY
풀어 주다: 2016-06-13 13:33:50
원래의
1256명이 탐색했습니다.

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

单关键字就不用说了 主要是多关键字,在多关键字搜索的时候是不是要把关键字分割成数组?如果是分割成数组(不能确定数组的长度,因为不知道用户会输入几个关键字),那么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的效率下找到对应表的主键,再从数据库查询

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿