最近发现,使用搜索功能时,只能搜索到标题含有关键词的文章,或者使用标签搜索到有相同标签的文章。
这显然不是我想要的,我希望搜索的结果是:标题中有关键字的文章排在前面,而文章中出现关键字排在后面。所以,就针对此问题进行了优化。具体如下:
打开 emlog 源码 /lib/controller/search_controller.php 文件。
1、找到下面这一行:$sqlSegment = "and title like ’%{$keyword}%’ order by date desc";
将其修改为:$sqlSegment = "and (title like ’%{$keyword}%’ or content like ’%{$keyword}%’ or excerpt like ’%{$keyword}%’) order by date desc";
2、接着找到下面这一行:$logs = $Log_Model->getLogsForHome($sqlSegment, $page, $index_lognum);
在此行前面添加如下内容,用于查询含有关键词的文章:$sqlSegment = "and (title like ’%{$keyword}%’) union (SELECT * FROM " . DB_PREFIX . "blog WHERE type=’blog’ and hide=’n’ and checked=’y’ and (content like ’%{$keyword}%’ or excerpt like ’%{$keyword}%’))";
文章多的绕过,因为这样会降低搜索效率。