| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- """给老的「多轴正交组合」query 加一层创作筛选(query_filter.txt)。
- 读 DB 里 method=多轴正交组合 的每条 query,批量过 filter,把 keep + filter_reason 写回各自的
- axes JSON(前端据此显示 留/排除)。不重生成、不动搜索结果,纯就地打标。
- 用法:PYTHONPATH=. CK_ENV_FILE=.env python scripts/filter_multiaxis.py [method]
- """
- from __future__ import annotations
- import json
- import sys
- from acquisition import store
- from acquisition.query_filter import filter_queries
- from core.config import Settings
- METHOD = sys.argv[1] if len(sys.argv) > 1 else "多轴正交组合"
- def main() -> None:
- settings = Settings.from_env()
- conn = store.connect()
- try:
- rows = conn.execute("SELECT id, query, axes FROM queries WHERE method=?", (METHOD,)).fetchall()
- if not rows:
- print(f"DB 里没有 method={METHOD} 的 query")
- return
- queries = [r["query"] for r in rows]
- print(f"{METHOD}: {len(queries)} 条 → 过滤中…")
- verdicts = filter_queries(queries, settings)
- kept = 0
- for r, v in zip(rows, verdicts):
- axes = json.loads(r["axes"] or "{}")
- axes["keep"] = v["keep"]
- axes["filter_reason"] = v["reason"]
- conn.execute("UPDATE queries SET axes=? WHERE id=?",
- (json.dumps(axes, ensure_ascii=False), r["id"]))
- kept += 1 if v["keep"] else 0
- conn.commit()
- print(f"完成:保留 {kept} / {len(queries)}(排除 {len(queries) - kept})")
- finally:
- conn.close()
- if __name__ == "__main__":
- main()
|