55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
|
||
"gorm.io/driver/mysql"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
const dsn = "root:root@tcp(127.0.0.1:3306)/db?charset=utf8mb4&parseTime=True&loc=Local"
|
||
|
||
func main() {
|
||
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
// 1) brand 3100 的走秀档案数(only_with_articles 子查询依赖这个)
|
||
var artCount int64
|
||
db.Raw(`SELECT COUNT(*) FROM brand_runway WHERE is_deleted=0 AND brand_id=3100`).Scan(&artCount)
|
||
fmt.Printf("brand 3100 走秀档案数 = %d\n", artCount)
|
||
|
||
// 2) 复现后端完整搜索:only_with_articles=1 + keyword=猿人头
|
||
kw := "%猿人头%"
|
||
type Row struct {
|
||
ID uint32
|
||
Name string
|
||
NameEn string
|
||
NameCn string
|
||
}
|
||
var rows []Row
|
||
db.Raw(`
|
||
SELECT id, name, name_en, name_cn FROM brand
|
||
WHERE is_deleted=0
|
||
AND id IN (SELECT DISTINCT brand_id FROM brand_runway WHERE is_deleted=0)
|
||
AND (name_en LIKE ? OR name_cn LIKE ?)`,
|
||
kw, kw).Scan(&rows)
|
||
fmt.Printf("\n[搜索 keyword=猿人头, only_with_articles=1] 命中 %d 条:\n", len(rows))
|
||
for _, r := range rows {
|
||
fmt.Printf(" id=%d | name=%q | name_en=%q | name_cn=%q\n", r.ID, r.Name, r.NameEn, r.NameCn)
|
||
}
|
||
|
||
// 3) 对比:only_with_articles=0(不过滤档案)时的命中
|
||
var rows2 []Row
|
||
db.Raw(`
|
||
SELECT id, name, name_en, name_cn FROM brand
|
||
WHERE is_deleted=0
|
||
AND (name_en LIKE ? OR name_cn LIKE ?)`,
|
||
kw, kw).Scan(&rows2)
|
||
fmt.Printf("\n[搜索 keyword=猿人头, only_with_articles=0] 命中 %d 条:\n", len(rows2))
|
||
for _, r := range rows2 {
|
||
fmt.Printf(" id=%d | name=%q | name_en=%q | name_cn=%q\n", r.ID, r.Name, r.NameEn, r.NameCn)
|
||
}
|
||
}
|