苹果cms查询数据库用的是like匹配,相当于包含与被包含关系。例如搜索:复仇者联盟4:终局之战,使用搜索词:复仇者、终局之战这类的都能匹配到,因为这些词都包含于复仇者联盟4:终局之战,但是使用搜索词:复仇者联盟4终局之战 却无法匹配到,很简单:因为不包含。再换个准确的说法:搜索词要连续的被包含于片名。所以这就是为什么没有标点符号无法搜索到结果的唯一原因。

最近我也在想办法,有下面几个解决方案,最简单针对性强的是方法三,可以完美解决因标点符号导致苹果cms搜索不到结果的问题。

目前效果比较好操作性强的是方法三,但是会存在一个问题:用户在搜索片名过程耗时增加,也就是说会造成搜索缓慢,这个现象一般常见于虚拟主机,低配置服务器,配置好点的应该不会出现这一情况,毕竟只有几万条数据,mysql查询还是没有压力的。

如果你发现搜索变得非常缓慢,可使用如下命令进行还原操作。注意:使用后将不能解决标点符号的问题。

UPDATE {pre}vod SET vod_sub=""

一、导入豆瓣数据

例如影片:复仇者联盟4:终局之战,在豆瓣(douban.com)网站搜索该影片,并进入该影片的详情页,得到地址
https://movie.douban.com/subject/26100958/

看到最后的subject后面的数字:26100958,这个就是该影片的豆瓣id。
请输入图片描述

进入苹果cms后台,在【视频】-【视频数据】里查找到这个影片复仇者联盟4:终局之战,填入刚才的豆瓣ID:26100598,点击查询数据按钮,你会发现所有信息都自动补全,包括副标。这个副标自动填写的是啥?就是上图我框出来的“又名”。

注意:豆瓣开启了防盗链,使用这个方法会导致视频的图片无法正常加载,需要额外手动修改图片。
请输入图片描述

这是一个费时费力的活,并且你也不一定会解决标点符号的问题,例如这里的副标里就没有“复仇者联盟4终局之战”的字样。但是这个方法能解决另一些问题:如有人搜索复联4,复仇者联盟3:无尽之战(下),甚至有人搜英文:The Avengers 3: Part 2。所以这个方法能解决一个影片的常用别名。用户搜索除了片名以外,最多也就是这个别名了,别名不是“复仇者联盟4终局之战”,说明真没有多少人会搜所这个,你也不需要担心。

二、引入第三方搜索

这是最好的解决方法,让专业的搜索引擎为你搜索,用户无论怎么写,都能给他搜索到。但有个前提是搜索引擎收录你的网站又快又全。如何知道网站在百度,谷歌等搜索引擎里的收录情况?输入关键词:site:域名,结果的数量相当于你被收录的数量。结果太少就过了吧。

百度,谷歌都提供独立的搜索页,所以你不需要太多的专业知识,只需要在搜索页里显眼的地方加一个按钮,跳转到他们的搜索页就行。或者更友好一点的设计:默认使用苹果cms自带的搜索功能,有结果出来就隐藏按钮,只有自带的搜索没有结果才显示出这个按钮。

百度站内搜索

  • 地址:zn.baidu.com
  • 前提条件:备案、被百度收录

优缺点:在国内正常使用,但是需要备案,影视站要百度大规模收录也是个问题。

谷歌自定义搜索

  • 地址:cse.google.com
  • 条件:被谷歌收录

优缺点:非常专业好用,无需备案,收录速度快。唯一缺点是国内无法正常使用,我测试使用反代,好像也失败了。谷歌自定义搜索有api,能解决国内无法使用的问题,但是每天只能免费使用100次。

提取第三方搜索结果

  • 条件:收录

方法:示例:在百度搜索:site:mebi.me vps,能找到本站所有关于vps的结果。借助这个方法,我们可以写个php,提取这些结果来“自制”一个搜索功能,我们甚至可以结合百度、谷歌、360、搜索这类搜索引擎的搜索结果,唯一要求只有一个:网站收录快而全。

这个php暂时博主没写,原因是网站收录不够,没有写的动力。看以后网站收录情况了吧。

三、借助MYSQL过滤

最能满足题目要求的方法。苹果cms使用的是mysql数据库,我们只需要过滤片名中的标点符号并存放在副标里就可以达到要求。

首先进入苹果cms,依次【数据库】-【执行SQL语句】,输入以下语句并执行

UPDATE {pre}vod SET vod_sub=REPLACE(REPLACE(REPLACE(vod_name, '!',''), ':' ,''), ',','')

清除缓存后,我们拿现在比较热的电影【跳舞吧!大象】举例,在首页搜索:跳舞吧大象,成功找到电影。有标点符号说明的就不再是问题了。
请输入图片描述

Last modification:December 16th, 2020 at 01:48 pm
如果觉得我的文章对你有用,请随意赞赏