[英]Search query optimization in mysql
我正在搜索查詢。 我的桌子上有一個字符串“ thomas alva edison”。 如果用戶搜索,我想顯示此字符串,
托馬斯·阿爾瓦·愛迪生,托馬斯·阿爾瓦,愛迪生,托馬斯·阿爾瓦,托馬斯·愛迪生等
但不是
tho,son,alv等
我所做的是
select name from tbl_names where name like "."'%".$key."%'
如何修改此查詢以獲得正確的結果。
我建議在查詢中使用REGEXP進行單詞搜索,
查詢應類似於:
SELECT name FROM `tbl_names` WHERE `name` REGEXP '[[:<:]]thomas[[:>:]]'
希望這對您有用。 有關更多詳細信息,請選中此復選框 。
MySQL提供了一種實現少量搜索的絕妙方式(全文搜索)。 http://viralpatel.net/blogs/full-text-search-using-mysql-full-text-search-capabilities/
例如:
select name from tbl_names WHERE MATCH (name) AGAINST ('thomas');
在全文搜索中,我們有很多選擇,而只有MySQL 5.6 MYISAM引擎少。
您也可以嘗試如下操作:
$sql = "select name from tbl_names where ";
$array = explode(" ",$key);
$or = "";
foreach($array as $word) {
if(strlen(trim($word))>0) {
$sql.= $or."(name like '%".$word."%')";
$or = " OR ";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.