You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于RawFrequencyDicts模型获取指定频次及Top N高频数据

实现指定频次筛选与高频数据获取

现有模型定义

class RawFrequencyDicts(Base):
    __tablename__ = "raw_frequency_dicts"
    id = Column(types.UInt64, primary_key=True)
    item = Column(types.String)
    lemmatized_text = Column(types.String)
    lemmatized_text_no_ordered = Column(types.String)
    frequency = Column(types.Int64)
    count_words = Column(types.Int64)
    mark_up = Column(types.Int64)
    domain_id = Column(types.Int64)
    language = Column(types.String)
    run = Column(types.Int64)
    run_desc = Column(types.String)
    created_at = Column(types.DateTime)
    updated_at = Column(types.DateTime)
    __table_args__ = (engines.MergeTree(),)

需求说明

  • 可通过size参数获取频次排名前N的数据(如size=1000时取前1000条高频数据)
  • 已实现按指定频次值筛选的基础代码:
    query_db = query_db.filter(model.frequency == int(params.frequency))
    

实现方案

1. 完善指定频次值的筛选逻辑

你已编写的代码可实现固定频次筛选,建议增加参数校验避免类型异常:

# 校验参数合法性,防止非整数输入导致报错
try:
    target_freq = int(params.frequency)
except ValueError:
    raise ValueError("frequency参数必须为整数类型")

query_db = query_db.filter(RawFrequencyDicts.frequency == target_freq)

2. 获取前N高频数据

要获取频次排名前size的数据,需先按frequency倒序排序,再限制返回条数:

# 按频次降序排序后取前size条
query_db = query_db.order_by(RawFrequencyDicts.frequency.desc()).limit(int(params.size))

3. 组合场景:指定频次内取前N条数据

如果指定频次下数据量过大,需要从中取前N条,可结合筛选、排序(可选)和limit:

try:
    target_freq = int(params.frequency)
    size = int(params.size)
except ValueError:
    raise ValueError("frequency和size参数必须为整数类型")

# 先筛选指定频次,再按更新时间倒序排序,最后取前size条
query_db = query_db.filter(RawFrequencyDicts.frequency == target_freq)\
                   .order_by(RawFrequencyDicts.updated_at.desc())\
                   .limit(size)

注意事项

  • 基于ClickHouse的MergeTree引擎,建议给frequency字段添加索引,避免全表扫描影响查询性能
  • 若size参数未指定,可设置默认值(如默认返回前100条)
  • 分页场景下尽量避免大offset,建议用主键或排序字段做分页标记,提升查询效率

内容的提问来源于stack exchange,提问作者Tarodictrl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:31:19