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

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

xuwenyan3年前 (2021-04-30)建站549

狂雨小说平台算是一个比较好用的开源小说平台了,相信搭建小说网站的朋友都有所了解。但是该平台有一个比较难用的点是搜索功能,当你搜索一部小说的时候它默认是按更新时间排序的,关键词完全匹配上的小说反而排在很后面。比如,你搜索'斗罗大陆',结果搜索界面前几条全是‘斗罗大陆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

    分享给朋友:

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

    怎么解决https网站访问http文件报错?

    怎么解决https网站访问http文件报错?

    https的网站访问一些http的文件时,比如html中直接在线使用一些三方库时,会报文件地址被blocked Mixed Content: The page at 'https://www.xxx.com/' was loaded over HTTPS, but requested an...

    Word Press获取文章发布时间并生成归档日期链接

    Word Press获取文章发布时间并生成归档日期链接

    Word Press获取当前文章发布时间,获取当前文章发布时间归档链接 发布日期获取 <pre class="wp-block-code">$year = get_the_time( ‘Y’ );$month = get_the_time( ‘m’ );$da...

    如何实现Word Press文章底部相关文章推荐?

    如何实现Word Press文章底部相关文章推荐?

    如何实现Word Press相关文章推荐?推荐一个比较好用的插件:Yet Another Related Posts Plugin (YARPP),可以在管理后台插件商城搜索到。 使用这款插件后,就可以自动在你的文章底部自动添加相关的文章推荐了,有助提高博客文章的阅读量。 插件功能:...

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

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

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

    Word Press如何实现显示摘要、增加阅读更多按钮

    Word Press如何实现显示摘要、增加阅读更多按钮

    Word Press如何实现显示摘要、增加阅读更多按钮。前提条件是主题必须支持,如果主题不支持得通过别的方法实现,下面的方法只在主题支持的前提下有用。 手动添加摘要显示 在你需要显示的摘要内容后加入一个'更多'控件即可,每个主题添加更多控件的方式可能不同,下面是我添加的方法,大家可以参...

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

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

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