展开全部
自己在写一个web,希望对数据库做全文检索。但是google了解到,由于中文分词的缘62616964757a686964616fe4b893e5b19e31333361326265故,mysql只支持英文的全文搜索,想支持中文的,需要各种插件or实现一些比较复杂的机制,而买的虚拟主机并不支持这些复杂的东西。仔细想了下,因为自己需求的功能也比较简单,主要是2个字段的搜索,且数据量不大,即便增加几个字段,需要多运行几个select也不会对速度有太大影响,所以通过一些work around实现了需求。Step 1:用locate进行简单的搜索Locate可以判断子串是否在子乱 有两个column,一个name,一个description.所以可以用LOCATE>0去判断是否关键字在其中出现了。 其实就是 SELECT * FROM table WHERE LOCATE(key, 'name')>0 OR LOCATE(key, 'description);这样,我们就简单实现了对某个key在两个域的搜索Step 2:搜索多个关键字 通常,搜索都是有多个关键字,所以我们需要对每个关键字,执行下Step1的查询。(当然,也可以合成一个,这里偷懒每次只查询1个关键字) 然后,我们再将每次查询出的数组都合并,这样就得到了一个最终的集合。php代码如下:
function selectlocate($tarcols,$skey){
$where ="";
$connector = " ";
global $count;
foreach($tarcols as $tarcol ){
$wher