当前位置:首页 > 建站 > 正文内容

狂雨小说平台如何实现按关键词匹配度排序

xuwenyan2年前 (2021-04-30)建站164

狂雨小说平台算是一个比较好用的开源小说平台了,相信搭建小说网站的朋友都有所了解。但是该平台有一个比较难用的点是搜索功能,当你搜索一部小说的时候它默认是按更新时间排序的,关键词完全匹配上的小说反而排在很后面。比如,你搜索'斗罗大陆',结果搜索界面前几条全是‘斗罗大陆xxx’或者'xxx斗罗大陆',真正的'斗罗大陆'往往在很后面,使用体验非常不好。下面就演示一下如何实现狂雨小说平台按关键词匹配度排序和相关问题的解决思路,我下面实现的是按关键词长度排序,要按匹配度的话大家求一下关键词长度与目标key长度的绝对值来对比吧,思路是一样的。

第一步:添加排序代码

狂雨小说平台小说存储使用的mysql,在搜索小说时使用的就是mysql的排序语句了(order语句),首先找到主题模板下的search.html文件(目录在‘\template\home\’下),修改排序语句如下:

原句:{novel id="novel" limit="30" order="update_time desc" page="1"}
改为:{novel id="novel" limit="30" order="length(title) asc" page="1"}

第二步:解决‘排序表达式错误:length(title)’错误

排序代码添加好了,输入关键词搜索,发现报错:'排序表达式错误:length(title)‘。

这其实是源码作者为了mysql安全,特意匹配了输入的关键词,防止一些注入语句威胁网站安全,我们只需要在这个校验语句上放过符号'()'即可。

找到‘\thinkphp\library\think\db\’下的Builder.php文件,修改以下代码:

原句:preg_match('/^[\w\.]+$/', $key)
改为:preg_match('/^[\w\.()]+$/', $key)

第三步:解决'不支持的数据表达式:length(title)'错误

本以为可以了吧,点击搜索,发现又报错'不支持的数据表达式:length(title)'

这还是作者写的一个校验代码,我们依然只需要在这个校验语句上放过符号'()'即可。

找到‘\thinkphp\library\think\db\builder\’下的Mysql.php文件,修改以下代码:

原句:!preg_match('/^[\w\.\*]+$/', $key)
改为:!preg_match('/^[\w\.()\*]+$/', $key)

好啦,搜索结果就会以关键词长度从小到大排序啦。

解决思路:

1:找到搜索页面

2:找到排序语句,改为自己想要的排序语句

3:解决错误,思路是在源代码搜索报错信息,然后以打印日志等方法定位到报错行,然后就百度找解决方案啦!

    文章作者:xuwenyan
    版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。

    扫描二维码推送至手机访问。

    版权声明:本文由艺文笔记发布,如需转载请注明出处。

    本文链接:https://www.xuwenyan.com/archives/2087

    分享给朋友:

    “狂雨小说平台如何实现按关键词匹配度排序” 的相关文章

    为WordPress文章添加转载申明版权信息等

    为WordPress文章添加转载申明版权信息等

    浏览别人的博客文章时,会发现文章底部往往会有一些申明,如(本文转载于xxx的文章xxx)或(本文由xxx原创,禁止转载)之类的。如果这种申明完全靠写文章时手动添加,那会相当麻烦又累,特别想要修改时,那往期的文章那么多,可谓是欲哭无泪呀。 添加转载申明代码 找到主题中的functions...

    如何在Word Press添加图片放大显示?

    如何在Word Press添加图片放大显示?

    使用word press时,我们文章中的图片常会因为尺寸过大而导致预览图被压缩看不清楚,因此我们需要一个可以点击图片就能放大图片查看的功能,这在其它网站是很常见的一个功能。那么如何实现在Word Press添加图片放大显示? 第一步,准备fancybox插件 我们需要用到fancybox插件...

    推荐一个Word Press自定义关键词的插件G Meta Keywords

    推荐一个Word Press自定义关键词的插件G Meta Keywords

    虽然现在的搜索引擎对关键词已经不那么看重了,但也不排除有一些搜索引擎还是会考察的。其实有一些插件可以根据文字内容自动生成关键词,虽然不是很精确,缺也做到了省事。但是如何根据自己的意愿自定义关键词呢?推荐一个Word Press自定义关键词插件“G Meta Keywords”。 如何安装G...

    linux如何修改用户密码(passwd)

    linux如何修改用户密码(passwd)

    linux如何修改用户密码(passwd)? root密码 1:在终端输入 passwd 2:根据提示输入 New password 3:根据提示输入 Retype new password 非root密码 1:在终端输入 passwd userName (us...

    Linux如何通过命令终端修改文件内容?

    Linux如何通过命令终端修改文件内容?

    Linux如何通过命令终端修改文件内容? 比如在/test/test.txt文件中增加一行 hello linux world ! 命令是:vi,vim vi 编辑器,相当于记事本,有编辑功能,但较弱vim 复杂的编辑器,相当于windows的 editplus, notepad...

    已经备案的域名主机更换之后需要重新备案吗?

    已经备案的域名主机更换之后需要重新备案吗?

    ICP备案备案一般是由我们的域名服务器商协助办理备案的,比如我们的域名是在腾讯云购买的,那么一般就是选择在腾讯云办理备案,那么腾讯云也是我们的备案接入商了。那么如果因为某种原因更换了服务器主机后是否需要重新备案域名呢?主要分以下三种情况: 1:更换的服务器主机属于同一个服务商 比如我们...