【发布时间】:2017-03-01 09:36:19
【问题描述】:
我有一个大部分情况下都有效的查询,但唯一的障碍似乎是结果的显示顺序。我想根据与搜索或最接近匹配的相关性显示顺序;例如,用户可能会搜索Accessories,但结果显示如下,理想情况下会在顶部显示Accessories。
用户也可以搜索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");
【问题讨论】:
-
和你之前的问题有什么不同??
-
你的意思是除了没有得到有用的答案吗?
-
@NikkiMather 这不是打开具有相同主题的新问题的正当理由。编辑您之前的帖子,试图了解为什么您没有得到足够的关注。可能是因为您要求其他用户代表您编写代码