# Clickvisual Agent 设计思路

# 设计方法

  • 因为日志是时序数据,有很好的时间顺序,在最上面的日志时间都是比较小的,在最下面的日志时间都是比较大的,利用该特性可以很好的缩小日志检索范围 根据数据匹配,获得后面的时间数据,"ts":"(.*)",拿到$1数据后,按照预设的时间格式解析
  • 可以通过二分法,将时间快速缩小查询范围
    • 例如日志有7天数据 2023-09-15 00:00:00 ~ 2023-09-22 00:00:00,我们只需要查询两天 2023-09-17 12:00:00 ~ 2023-09-19 09:00:00 结合文本内容,有个start position,end position坐标,初始为startPos=0,结束为endPos=文件大小
    • 我们先找 startPos
      • 二分取 pos = (startPos + endPos)/2 这一行的日志
        • 如果这个日志时间大于 2023-09-17 12:00:00 , 时间符合要求,那就还需要继续往上面找内容
        • 如果这个日志时间小于 2023-09-17 12:00:00 , 时间符合要求,那就还需要继续往下面找内容
        • 最终会产生一个from 和 to的交叉点,找到最终位置
      • 同理 endPos

# 设计原则

  • 支持并发多个文件查询
  • 支持按时间来缩小范围
  • 支持各种 and 查询
  • 支持 offset,limit 条数
    • 因为过多的日志内容输出无意义
    • 目前命令行只支持limit
    • 如果是浏览器,可以记录offset状态
  • 支持按照时间顺序,逆序
上次更新: 2024-02-13 12:35:52