我有一個查詢大部分的工作,但唯一的障礙似乎是結果顯示的順序。我想根據與搜索或最接近匹配的相關性來顯示訂單;作爲一個例子,用戶可能會搜索Accessories
但是結果如下所示,理想情況下在頂部顯示爲Accessories
。MySQL - 通過相關性排序結果(MATCH AGAINST?)
用戶也可以搜索Exhaust Accessories
,當然如果它也顯示在結果的頂部,而不是按照當前顯示的ID進行排序,它將是理想的。
我嘗試過使用match
和against
,但似乎無法使用我有限的MySQL知識正常工作。
查詢結果爲Accessories
Exhaust Accessories
Accessories
Centre Stand Accessories
Rear Stand Accessories
Side Stand Accessories
搜索時的代碼我與
$arr = explode(' ','Accessories');
$str = '';
$i = 1;
$arrCount = count($arr);
foreach($arr as $v){
if($arrCount > 1 && $i == 1) { $str.= '('; }
$str.= 'wpmj8c_terms.name LIKE "%'.$v.'%" ';
if($arrCount > 1 && $arrCount == $i) { $str.= ')'; } elseif($arrCount > 1 && $arrCount != $i) { $str .= " OR " ;}
$i++;
}
$cat = $wpdb->get_results("SELECT *
FROM wpmj8c_term_relationships
LEFT JOIN wpmj8c_term_taxonomy
ON (wpmj8c_term_relationships.term_taxonomy_id = wpmj8c_term_taxonomy.term_taxonomy_id)
LEFT JOIN wpmj8c_terms on wpmj8c_term_taxonomy.term_taxonomy_id = wpmj8c_terms.term_id
WHERE wpmj8c_term_taxonomy.taxonomy = 'product_cat' AND $str
GROUP BY wpmj8c_term_taxonomy.term_id");
與您以前的問題有什麼不同? –
[MySQL show close match first]可能的重複(http://stackoverflow.com/questions/42511277/mysql-show-closest-match-first) –
你的意思是除了沒有得到有用的答案嗎? –