XiunoBBS 官方搜索插件改进教程
教程 精华文章

admin 2019-01-09 1922

官方的搜索插件说实话,搜索安全但是搜索效率太低,不能多个关键词匹配。我在自己网站搜索老帖子经常出现输入2个关键词搜不到的情况,只输入1个关键词吧内容又太多,搜索的不够准确!后来看了一下搜索源码,难怪,输入多个空格的词最终还是当一个词搜索的,这就尴尬了。

比如:

搜索此帖输入“xiuno pc”是搜索不到此帖的,那怎么才可以搜索到此帖呢,只能输入“xiuno侧重”,那想输入“xiuno pc”能搜索此帖有没有办法呢?答案是:必须有!

打开搜索文件xn_search\route\search.php,然后我使用的是like搜索类型,添加和修改以下代码

foreach($keyword_arr as $key => $cond_val){
    $cond_sql .= ($range == 1?"subject":"message")." LIKE '%$cond_val%'";
    if($key != count($keyword_arr) - 1)$cond_sql .= ' AND ';
}

注意2个小圈圈的要替换成新的SQL语句

最终搜索效果图

这样就可以多关键词匹配到结果了。可能效率会降低,但是总比搜不到自己想要的结果要好的多吧,再者,我们的论坛都是建了索引的,就算你有10W条数据也是秒查找,不影响!

 

二楼需要修改后的文件,修改后把文件传上来了,在本站测试没问题。下载替换吧!

 

上传的附件:
  • search.rar
    上传时间:2019-02-20 | 下载次数:16 次 | 文件大小:1.92K


命运赠与你的东西早已在暗中标好了价格。

游客你好,您可以 注册 成会员 or 登录


6 条评论

  • 游客
    2019-2-19
    引用 2
    能把修改好的文件发出来吗?菜鸟不太懂怎么改。感谢
  • admin
    2019-2-19
    引用 3
    游客 能把修改好的文件发出来吗?菜鸟不太懂怎么改。感谢
    好的,这两天传上来。
  • 888888P
    2019-3-26
    引用 4



    大侠,用数字和字母一起搜索时,居然搜到代码出来了,怎么解决啊

  • 888888P
    2019-3-26
    引用 5



    大侠,我在你的站上测试,也出现这种情况,你可以出个教程解决一下吗

  • oliolo
    2019-3-27
    引用 6
    确实哦
  • admin
    2019-3-28
    引用 7

    @888888P    四楼问题解决方法:

    搜索插件染色search.func.php代码更新一下。感谢原作者@百晓生 

    function search_keyword_highlight($s, $keyword_arr) {
        foreach($keyword_arr as $key => $keyword) {
            if($key >= 1){
                $chunks = preg_split('/(<span.*?\/span>)/ms', $s, - 1, PREG_SPLIT_DELIM_CAPTURE);
                foreach ($chunks as $c) {
                    if (strpos($c, '<span') !== 0){
                        $tmp = $c;
                        $c = str_ireplace($keyword, '<span class="text-danger">'.$keyword.'</span>', $c);
                        $s = str_ireplace($tmp, $c, $s);
                    }
                }
            }else{
                $s = str_ireplace($keyword, '<span class="text-danger">'.$keyword.'</span>', $s);
            }
        }
        return $s;
    }
  • 游客
    8