闲暇时光 🌑
闲暇时光
我の闲暇时光 time flies
静谧时光,执笔抒心,岁月痕迹甚好。
109
21
58



MySQL模糊搜索按照匹配度进行排序

2021-02-20 16:20:23 - 2025-07-01 00:28:02
無慕 - 1.13K - 6秒 - 1.82K

在一些类似于文章博客的内容中,会用到模糊搜索检索多个字段,对于检索后的结果排序可能并不满意。

例如:

在CSDN搜索一篇博文,在输入关键字后会检索文章的标题,内容,分类,标签等内容,但是检索的排序结果可能不太理想,比如想优先显示标题中带有此关键字的文章,不管是按主键或者时间排序都是不行的。

下面我就简单的说明一下遇到这种问题的几种解决办法:

  • 利用LOCATE函数(MySQL数据库),按照匹配度进行排序。

    locate(subStr,string) 函数返回subStr在string中出现的位置,返回结果大于0代表着subStr出现的位置(从开始就存在则为1,即如果string中存在subStr最小值为1),如果等于0则说明subStr不存在。

检索`name`和`memo`字段中存在'shx'的信息,并优先显示`name`字段中存在'shx'信息并且出现位置靠前的数据:

SELECT `name`,`memo`,locate('shx',`name`) as `order_name` FROM `cs_user`
where `name` like "%shx%" or `memo` like "%shx%"
order by `order_name` desc

检索`name`和`memo`字段中存在'shx'的信息,并优先显示`name`字段中存在'shx'信息并且出现位置靠前的数据,如果`name`字段中'shx'信息出现的位置相同或者都不存在,即`order_name`为0时,则优先显示`memo`字段中存在'shx'信息并且出现位置靠前的数据:

SELECT `name`,`memo`,locate('shx',`name`) as `order_name`,locate('shx',`memo`) as `order_memo`  
FROM `cs_user`where `name` like "%shx%" or `memo` like "%shx%"
order by `order_name` desc,`order_memo` desc

  • 等待更新

编程 - 数据库
问题 笔记 MySQL 数据库

Redis安装(PHPredis服务+windows的redis环境)

2019-07-17 08:37:28 - 2025-07-01 00:28:02
無慕 - 953 - 28秒 - 1.69K

为PHP安装Redis服务

  1. 使用phpinfo();查看PHP的版本:

  2. 去下面的两个网站下载对应版本的压缩包并解压(注意:必须下载 nts 版本)
    https://windows.php.net/downloads/pecl/releases/igbinary/
    https://windows.php.net/downloads/pecl/releases/redis/

  3. 复制两个文件中的如下四个文件到php环境中的
    ext文件夹中(F:\phpstudy\PHPTutorial\php\php-7.0.12-nts\ext)

  4. 打开Apache的配置文件 php.ini,复制下面的两行代码到php.ini 文件中,并重启环境

  5. extension=php_igbinary.dll
    extension=php_redis.dll
  6. 重新使用 phpinfo() 函数 查看php相关信息,出现下图才是安装成功,如果失败请查看下载的对应压缩包的版本是否正确

给windows安装redis环境(win10)

  1. 去下面的网站下载对应的压缩包并解压:https://github.com/MicrosoftArchive/redis/releases/

    image.png

  2. 直接解压,并且cmd到解压目录下,运行文件夹中的redis-server.exe,出现下图即为安装成功:


  3. 要想在PHP中使用redis这个窗口是不能关的,否则redis将无法使用。当然如果一直开着会很麻烦,所以我们设置一下开机自启,让他在系统中一直启动着。用cmd打开解压目录,运行以下代码:

  4. redis-server --service-install redis.windows-service.conf --loglevel verbose
  5. 设置开机自动启动,打开cmd窗口并输入:services.msc,找到redis 服务点击启动即可

相关报错

  • 如果命令失败是找不到redis服务的

  • 1067错误:
    原因1:可能是因为他需要在logs目录下生成日志文件,而执行命令时权限不够没有生成,所以只需要手动创建一个logs目录即可。
    原因2:肯能是因为redis的启动窗口未关闭造成的


编程 - 后端
PHP Redis 数据库 教程
1
鲁ICP备2023049263号-1
© 2020 – 至今 闲暇时光
由 PHP MySQL 开发而成 | 主题 - Yun
upyun