Gal*_*Gal 5 mysql full-text-search
有什么不对:
$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] .'%"');
Run Code Online (Sandbox Code Playgroud)
然后查询数据库以按特定顺序检索结果,而不是使用myIsam-only sql match ...对?
它会大大磨损性能吗?
不同之处在于MySQL在幕后使用的算法中找到了您的数据.全文搜索还允许您根据相关性进行排序.在LIKE
大多数条件下的搜索会做一个全表扫描,因此这取决于数据量,你可以看到它的性能问题.处理大型行集时,全文引擎也可能存在性能问题.
另外,我要添加到此代码中的一件事是逃避爆炸值.也许打电话给mysql_real_escape_string()
你可以查看我最近为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万个帖子.
归档时间: |
|
查看次数: |
12207 次 |
最近记录: |