自己在写一个web,希望对数据库做全文检索。但是google了解到,由于中文分词的缘故,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代码如下:http://blog.chinaunix.net/uid-26456800-id-4242239.html