54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
// P1 冒烟验证工具(临时):验证金方 FULLTEXT 检索 + 别名归一索引
|
||
//
|
||
// 用法:go run ./tools/p1smoke
|
||
// 验证点:
|
||
// 1. dao.GoldenFormulaSearch 在 BOOLEAN / NATURAL 两种模式下能命中
|
||
// 2. kb.AliasIndex 能从爬取文档加载别名并做查询扩展
|
||
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"log"
|
||
|
||
"tcm-agent/internal/config"
|
||
"tcm-agent/internal/dao"
|
||
"tcm-agent/internal/kb"
|
||
)
|
||
|
||
func main() {
|
||
cfg := config.Load()
|
||
if cfg.DB.DSN == "" {
|
||
log.Fatal("配置缺少 db.dsn(检查 manifest/config/config.yaml)")
|
||
}
|
||
if err := dao.Init(cfg.DB.DSN); err != nil {
|
||
log.Fatalf("初始化 DB 失败: %v", err)
|
||
}
|
||
|
||
// ---- 1. 金方检索(自然语言模式:整段证候)----
|
||
fmt.Println("== 金方检索(NATURAL):恶寒发热 头痛 汗出 脉浮缓 ==")
|
||
hits, err := dao.GoldenFormulaSearch("恶寒发热 头痛 汗出 脉浮缓", 3, true)
|
||
if err != nil {
|
||
log.Fatalf("金方 NATURAL 检索失败: %v", err)
|
||
}
|
||
for _, h := range hits {
|
||
fmt.Printf(" [%.2f] %s | 主治: %.40s\n", h.Score, h.Name, h.IndicationTranslation)
|
||
}
|
||
|
||
// ---- 2. 金方检索(BOOLEAN 模式:短关键词)----
|
||
fmt.Println("== 金方检索(BOOLEAN):桂枝 ==")
|
||
hits2, err := dao.GoldenFormulaSearch("桂枝", 3, false)
|
||
if err != nil {
|
||
log.Fatalf("金方 BOOLEAN 检索失败: %v", err)
|
||
}
|
||
for _, h := range hits2 {
|
||
fmt.Printf(" [%.2f] %s\n", h.Score, h.Name)
|
||
}
|
||
|
||
// ---- 3. 别名索引加载 + 查询扩展 ----
|
||
fmt.Println("== 别名索引 ==")
|
||
idx := kb.GetAliasIndex()
|
||
q, appended := idx.ExpandQuery("患者常年脾虚,日常以淮山药、于术调理,近日恶寒")
|
||
fmt.Printf(" 扩展后查询: %s\n", q)
|
||
fmt.Printf(" 追加正名: %v\n", appended)
|
||
}
|