增强wordpress搜索结果的相关性
稍稍改进一下 wordpress 搜索结果页面,wordpress 的搜索结果默认的是按照时间来排序的,相关性是没有问题的,但如果文章越来越多的时候,搜索结果再按照时间来排序就不是哪么理想了,总不能找一篇相关的文章要翻十几页甚至几十页吧,所以我们就要想办法把相关性更强的文章放到最前面,其它相关性不是很强的排到后面,这样能够在第一时间找到自己想要的文章结果。
同样需要在主题下 functions.php 文件中加入如下的代码:
//增强wordpress搜索相关性
add_filter(‘posts_orderby_request’, ‘wpjam_search_orderby_filter’);
function wpjam_search_orderby_filter($orderby = ‘’){
global $wpdb;
$keyword = $wpdb->prepare($_REQUEST[‘s’]);
return “((CASE WHEN {$wpdb->posts}.post_title LIKE ‘%{$keyword}%’ THEN 2 ELSE 0 END) + (CASE WHEN {$wpdb->posts}.post_content LIKE ‘%{$keyword}%’ THEN 1 ELSE 0 END)) DESC, {$wpdb->posts}.post_modified DESC, {$wpdb->posts}.ID ASC”;
}
这段代码改变了以时间来排序的搜索结果,先按照日志的标题相关度进行排序,然后再按照内容的相关性来进行排序,最后才是按照日志的修改时间来排序,这样再去搜索文章,相关性已经大大提高了,可以看一下夏日博客现在的站内搜索功能。
对资源类的博客很需要这样的功能!