出了什么问题:
$term = $_POST['search'];
function buildQuery($exploded,$count,$query)
{
if(count($exploded)>$count)
{
$query.= ' AND column LIKE "%'. $exploded[$count] .'%"';
return buildQuery($exploded,$count+1,$query);
}
return $query;
}
$exploded = explode(' ',$term);
$query = buildQuery($exploded,1,
'SELECT * FROM table WHERE column LIKE "%'. $exploded[0] .'%"');
然后查询db以按特定顺序检索结果,而不是使用myIsam-only sql match ...对吗?
它会大大降低性能吗?
答案 0 :(得分:6)
不同之处在于MySQL在幕后使用的算法中找到了您的数据。全文搜索还允许您根据相关性进行排序。大多数条件下的LIKE
搜索将进行全表扫描,因此根据数据量,您可以看到性能问题。处理大型行集时,全文引擎也可能存在性能问题。
另一方面,我要添加到此代码中的一件事是逃避爆炸值。也许打电话给mysql_real_escape_string()
答案 1 :(得分:6)
您可以查看我最近为MySQL大学所做的演示:
http://forge.mysql.com/wiki/Practical_Full-Text_Search_in_MySQL
幻灯片也在这里:
http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql
在我的测试中,使用LIKE '%pattern%'
比使用MySQL FULLTEXT
索引慢300多倍。我的测试数据是来自StackOverflow 10月数据转储的150万个帖子。