mirror of
https://github.com/ProudMuBai/GoFilm.git
synced 2026-03-06 20:17:30 +08:00
movie match rule update
This commit is contained in:
@@ -5,12 +5,11 @@ import (
|
|||||||
"server/plugin/db"
|
"server/plugin/db"
|
||||||
"server/plugin/spider"
|
"server/plugin/spider"
|
||||||
"server/router"
|
"server/router"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// 执行初始化前等待20s , 让mysql服务完成初始化指令
|
// 执行初始化前等待20s , 让mysql服务完成初始化指令
|
||||||
time.Sleep(time.Second * 20)
|
//time.Sleep(time.Second * 20)
|
||||||
//初始化redis客户端
|
//初始化redis客户端
|
||||||
err := db.InitRedisConn()
|
err := db.InitRedisConn()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"log"
|
"log"
|
||||||
|
"math"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"server/config"
|
"server/config"
|
||||||
@@ -276,18 +277,22 @@ func GetRelateMovieBasicInfo(search SearchInfo, page *Page) []MovieBasicInfo {
|
|||||||
4. area 地区
|
4. area 地区
|
||||||
5. 语言 Language
|
5. 语言 Language
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// sql 拼接查询条件
|
// sql 拼接查询条件
|
||||||
sql := ""
|
sql := ""
|
||||||
|
|
||||||
// 优先进行名称相似匹配
|
// 优先进行名称相似匹配
|
||||||
//search.Name = regexp.MustCompile("第.{1,3}季").ReplaceAllString(search.Name, "")
|
//search.Name = regexp.MustCompile("第.{1,3}季").ReplaceAllString(search.Name, "")
|
||||||
search.Name = regexp.MustCompile(`[第.{1,3}季\s~!@#$%^&*()+={}\[\]|\\:;"'<,>·.?/\-_].*`).ReplaceAllString(search.Name, "")
|
name := regexp.MustCompile(`(第.{1,3}季.*)|([0-9]{1,3})|(剧场版)|(\s\S*$)|(之.*)|([\p{P}\p{S}].*)`).ReplaceAllString(search.Name, "")
|
||||||
regexp.MustCompile(`[\s~!@#$%^&*()+={}\[\]|\\:;"'<,>.?/\-_]+`)
|
// 如果处理后的影片名称依旧没有改变 且具有一定长度 则截取部分内容作为搜索条件
|
||||||
sql = fmt.Sprintf(`select * from %s where (name LIKE "%%%s%%" or sub_title LIKE "%%%[2]s%%") AND cid=%d union`, search.TableName(), search.Name, search.Cid)
|
if len(name) == len(search.Name) && len(name) > 10 {
|
||||||
|
// 中文字符需截取3的倍数,否则可能乱码
|
||||||
|
name = name[:int(math.Ceil(float64(len(name)/5))*3)]
|
||||||
|
}
|
||||||
|
sql = fmt.Sprintf(`select * from %s where (name LIKE "%%%s%%" or sub_title LIKE "%%%[2]s%%") AND cid=%d union`, search.TableName(), name, search.Cid)
|
||||||
// 执行后续匹配内容, 匹配结果过少,减少过滤条件
|
// 执行后续匹配内容, 匹配结果过少,减少过滤条件
|
||||||
//sql = fmt.Sprintf(`%s select * from %s where cid=%d AND area="%s" AND language="%s" AND`, sql, search.TableName(), search.Cid, search.Area, search.Language)
|
//sql = fmt.Sprintf(`%s select * from %s where cid=%d AND area="%s" AND language="%s" AND`, sql, search.TableName(), search.Cid, search.Area, search.Language)
|
||||||
|
|
||||||
// 根据当前影片的分类查找相似影片
|
// 添加其他相似匹配规则
|
||||||
sql = fmt.Sprintf(`%s (select * from %s where cid=%d AND `, sql, search.TableName(), search.Cid)
|
sql = fmt.Sprintf(`%s (select * from %s where cid=%d AND `, sql, search.TableName(), search.Cid)
|
||||||
// 根据剧情标签查找相似影片, classTag 使用的分隔符为 , | /
|
// 根据剧情标签查找相似影片, classTag 使用的分隔符为 , | /
|
||||||
// 首先去除 classTag 中包含的所有空格
|
// 首先去除 classTag 中包含的所有空格
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package db
|
|||||||
import (
|
import (
|
||||||
"gorm.io/driver/mysql"
|
"gorm.io/driver/mysql"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/logger"
|
||||||
"gorm.io/gorm/schema"
|
"gorm.io/gorm/schema"
|
||||||
"server/config"
|
"server/config"
|
||||||
)
|
)
|
||||||
@@ -24,7 +25,7 @@ func InitMysql() (err error) {
|
|||||||
SingularTable: true, //是否使用 结构体名称作为表名 (关闭自动变复数)
|
SingularTable: true, //是否使用 结构体名称作为表名 (关闭自动变复数)
|
||||||
//NameReplacer: strings.NewReplacer("spider_", ""), // 替表名和字段中的 Me 为 空
|
//NameReplacer: strings.NewReplacer("spider_", ""), // 替表名和字段中的 Me 为 空
|
||||||
},
|
},
|
||||||
//Logger: logger.Default.LogMode(logger.Info), //设置日志级别为Info
|
Logger: logger.Default.LogMode(logger.Info), //设置日志级别为Info
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user