【发布时间】:2017-02-28 14:24:43
【问题描述】:
我有一个功能,可以根据用户搜索搜索 Wordpress 类别的匹配项,它工作正常,但是我想在结果顶部显示与搜索最接近的匹配项。例如,如果用户搜索“附件”,我希望先显示它,然后再显示任何其他匹配项。理想情况下,它们将按相关性排序,但我不确定如何实现。
目前,下面的代码按在查询中找到它们的顺序而不是按特异性显示它们。下面的代码产生以下结果。
代码返回什么
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");
【问题讨论】:
-
您想与 $str 比较哪个列名?
-
product_cat我想 -
保存结果的列是哪一列?是
wpmj8c_terms.name吗? -
正确,你可以在foreach中看到。
-
我认为使用“Match Against”可能会更快,更容易排名。