freehire 数据全景:225 个来源、92 个 ATS 平台、29.4 万家公司的数据版图是怎么搭起来的

发布时间:2026/10/20 2:40:41

freehire 数据全景:225 个来源、92 个 ATS 平台、29.4 万家公司的数据版图是怎么搭起来的 【免费下载链接】freehirefreehire — the open-source search engine for job seekers项目地址https://gitcode.com/gh_mirrors/fr/freehire点击查看免费下载freehire 是一个开源的招聘搜索引擎它的核心能力在于把分散在全球各地的招聘信息汇成一张可搜索、可筛选的统一版图截至最新目录快照freehire 从225 个数据源中抓取了330 万 条在招职位覆盖29.4 万家公司其中92 个 ATS 平台Applicant Tracking System招聘管理系统贡献了绝对大头。这篇文章带你用 10 分钟看懂这张数据版图的分层结构、抓取调度机制以及那些对外公布的数字是如何保持准确的。上图是项目对外展示的数据概览卡片卡片数字为较早一次快照本文以最新目录快照为准。职位数据分三层ATS 平台、聚合站、企业官网freehire 把所有数据源归为三种类型这个分类不是人工维护的配置而是直接由适配器的 Go 类型推导出来的定义逻辑位于 internal/ingest/sources/ 包中。每层的规模如下完整清单见 docs/sources.md层级数量覆盖公司在招职位 ATS 平台92 个157,3992,644,796 聚合站与招聘板100 个172,884629,571️ 企业招聘官网30 个5926,222注意同一家公司可能同时出现在多个来源下所以各层公司数相加会大于 29.4 万这个去重后的总数。ATS 平台真正的数据主力92 个 ATS 平台贡献了近 264 万条在招职位占全库的 80%。几个头部玩家的数据量级感受一下workday4,202 家公司74.8 万条职位单一平台最大trudvsem7.0 万家公司的长尾覆盖王26.7 万条职位smartrecruiters / oracle / greenhouse各自 15 万22 万条职位长尾同样惊人从 phenom 到只有 1 家公司的 epam最末位的数据源也稳定产出。每个 ATS 平台对应 internal/ingest/sources/ 下一个独立适配器文件如workday.go、greenhouse.go全部实现同一个Source接口所以新平台接入的工作量是有界的。聚合站与企业官网补充覆盖与一手数据聚合站Adzuna、hh、whatjobs 系列、Telegram 频道等 100 个来源价值在于覆盖面广其中 whatjobs 一个系列就分拆出 40 多个国家/地区站点。而 30 个企业招聘官网来源则是一手数据Amazon 单家 7,680 条、Apple 4,268 条、Google 3,452 条职位直接来自公司自己的招聘页面绕过了任何中间商。抓取调度一次一平台的单程工模式freehire 的抓取不是一个常驻爬虫进程跑所有平台而是run-once-and-exit worker运行一次即退出模型调度入口在 cmd/ingest/main.go每次运行只处理一个平台——比如这一次跑greenhouse、下一次跑lever各平台按自己的节奏独立调度慢平台永远不阻塞快平台。数据源目录是纯数据——boards表每行对应某公司在某 ATS 平台上的某个看板provider board region建表语句见 migrations/0123_boards.sql调度周期配置见 migrations/0132_ingest_schedule.sql。统一流水线——每次运行把抓到的原始页面交给 internal/ingest/pipeline/pipeline.go 中的pipeline.Runner抓取 → 归一化成单一 schema → 去重 → 写入数据库。失败有冷却——某个看板持续失败会进入记录的冷却期而不是每次运行都反复重试。这种设计的妙处worker 之间不共享内存所有协调都落在 Postgres 上因此系统里看不到常驻的任务队列守护进程排障和扩容都直白得多。架构全貌可参考 docs/architecture.md。从原始职位到搜索结果一条职位的完整路径抓到一条职位只是开始它还要经历三步才能出现在搜索结果里阶段机制关键实现去重以(source, external_id)为唯一键 upsert重复抓取零成本jobs表唯一约束事务出站队列新职位写入同一事务中投递到enrichment_outbox/search_outbox事务性 outbox批量索引进 Meilisearchcmd/search-drain/ 把整批文档作为单个任务推入索引批量合并避免打满磁盘 IO上图是 freehire 的职位搜索主页左侧可按地区、工作形式、技术栈、资历等维度筛选——这些筛选维度的数据正来自上文各层数据源的归一化字段。一个值得注意的工程细节Meilisearch 每次推送都会对全量约 270 万条文档重建倒排索引实测 90180 秒所以早期每个看板进程各自直推的设计曾打满宿主磁盘 IO现在统一由出站队列把大量小推送合并成少量大批次——这也是为什么未变化的重复抓取只刷新时间戳、不触发重索引。数字从哪来快照保证全站口径一致文章开头的 330 万、29.4 万这些数字并不是各个页面各自实时估算的——那会导致关于页和开放 API说的数对不上。freehire 的做法是catalogstatsinternal/ingest/catalogstats/catalogstats.go定时 worker 精确统计一次全库快照在招职位数、公司数、平台数随后全站所有引用目录规模的页面都读同一个Snapshot口径天然一致。sourcestatsinternal/ingest/sourcestats/sourcestats.go把每天的按来源分组测量折叠成source_stats快照行驱动每个数据源的公开统计页。统计还刻意区分了测量失败和测量结果为零两种状态避免公开页面把一个仍在运行的来源错误地显示为 0 条职位——这种细节决定了用户看到的数据是否可信。版图还在长大新增一家公司只需一行数据freehire 的数据版图并非静态它靠社区持续生长而扩容成本被刻意压到最低加一家已在支持平台上的公司boards目录里加一行company provider board。可以直接在网站的 contribute a board 表单提交或用go run ./cmd/add-board命令实现见 cmd/add-board/main.go新行首次爬取成功后自动转正。加一个全新的 ATS 平台 在 internal/ingest/sources/ 写一个适配器 注册表加一行工作量是有界的因为所有适配器说同一种语言Source接口。下线一个看板 把该行状态翻成retired永不删除——爬虫只爬活行误操作随时可逆。快速上手按这个顺序读项目资料想了解的内容去哪里看项目全貌与数据分层README.md每个数据源的详细计数docs/sources.md系统架构与数据流docs/architecture.md数据源适配器源码internal/ingest/sources/抓取流水线internal/ingest/pipeline/看板目录数据源清单internal/ingest/boardcatalog/上图演示了用 Remote Global/Worldwide 组合筛选远程职位的效果——这类跨来源的联合筛选正是 225 个数据源归一化的直接收益。一句话总结freehire 的数据版图 三层来源结构ATS 平台为主力 一次一平台的单程工抓取 事务化出站队列索引 统一快照统计。理解了这四件事你就理解了这 330 万条职位是如何被搭起来的以及它为什么还能持续长大。赞分享【免费下载链接】freehirefreehire — the open-source search engine for job seekers项目地址https://gitcode.com/gh_mirrors/fr/freehire点击查看免费下载相关推荐从 2 万到 3.3 万星RustFS 的中文社区口碑是怎么滚起来的从 2 万到 3.3 万星RustFS 的中文社区口碑是怎么滚起来的 一个开源项目在 GitHub 上从 2 万星滚到 3.3 万星意味着它在数月内让上万名对象存储存储后端MMPR 300 万偏好数据是怎么来的InternVL2_5-8B-MPO 多模态偏好数据集构造管线拆解MMPR 300 万偏好数据是怎么来的InternVL2_5 8B MPO 多模态偏好数据集构造管线拆解 InternVL2_5 8B MPO 是一个经过 混视频编辑全球第一H3 发布数据是怎么算出来的视频编辑全球第一H3 发布数据是怎么算出来的 2026 年 7 月底MiniMax 正式发布 H3 并宣布开放权重随之而来的是一连串极具冲击力的宣传口大模型多模态媒体生成视频音频上一篇多语言PDF对比工具使用PolyglotPDF进行原文与译文对照下一篇情侣专属微信小程序把恋爱玩成双人游戏任务攒积分让感情天天升温创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/20 2:35:41

数据团队做智能体:从仪表盘到能干活的数据闭环

最近和几个数据团队的朋友聊智能体项目,很多人兴冲冲给我看他们的Demo,我看了半天,心里只有一个想法:这不还是个仪表盘吗?不是那种旧式的图表页面,而是把大模型接上数据库,用户问一句&#xff0…

2026/10/20 2:35:41

DHOGSA模块:动态HOG感知自注意力机制如何助力YOLO26涨点

做模型改进的开发者,对“涨点”这两个字应该都不陌生。每天刷着各种榜单,盯着那几个关键指标,真正能落地的改进却少之又少。很多论文里的方法,代码零零散散,复现起来更是让人头大。但今天要聊的这个DHOGSA模块&#xf…

2026/10/20 2:35:41

Delphi中FastReport使用Excel数据源实战:动态列与导出技巧

简介:这份资源面向Delphi开发者与报表设计初学者,聚焦如何将Excel作为数据源接入FastReport,从而快速生成结构化的报表。内容围绕数据连接、数据集定义、报表布局设计、字段映射以及导出打印等环节展开,帮助读者理解在Delphi环境中…

2026/10/20 7:36:33

harness上下文管理:构建状态敏感的测试执行容器

1. 项目概述:这不是写代码,是给系统装“记忆回路”“梳理我的harness如何做上下文管理”——看到这个标题,我第一反应不是打开IDE,而是摸了摸自己电脑桌角那块被磨得发亮的金属边。过去三年里,我带过七个项目&#xff…

2026/10/20 7:36:33

PFC电流环LQR最优控制设计:从PI到状态反馈的Simulink仿真实践

先说句大实话:功率因数校正(PFC)的电流环,是数字电源里最容易让人半夜抓头发的地方。尤其是做了平均电流控制以后,PI参数怎么调都会在正弦波形的峰值附近掉队,电感电流拉出一个圆角,谐波就上去了…

2026/10/20 7:36:33

数据库存储与文件结构实战:从RAID到缓冲管理

聊到数据库,大多数人第一反应是SQL写法、索引设计、优化器行为。但真正跑过线上系统的人都明白,一台数据库在压力下是稳如老狗还是彻底卡死,胜负手往往不在SQL,而在存储这一层。这段时间我把《数据库系统概念》第十章“存储和文件…

2026/10/20 7:36:33

两线制4-20mA输出方案:基于GP8102SL/GP8212SL的共源型电路设计

做工业现场信号输出这几年,我越来越觉得4-20mA这个接口特别像老厂房里的水泥路——看着朴素,但所有设备都得从它上面走。现场仪表、阀门定位器、变频器、温度变送器,最后进DCS/PLC,绝大多数还是靠这4到20毫安的电流说话。最近我把…

2026/10/20 7:36:33

AI网页生成如何摆脱模板感:参考库驱动的领域化实践

1. 项目概述:当AI网页生成从“模板感”走向“人味儿”“给 AI 喂了一个参考库,它做的网页终于不像 AI 了”——这句话刚在技术圈传开,我就在三个不同行业的客户群里看到转发。不是因为多炫酷,而是太真实:某高校数字人文…

2026/10/20 7:31:33

基于Matlab的多智能体一致性算法仿真:从原理到代码实现

做机器人编队、分布式控制或者群体系统仿真的人,对“多智能体”和“一致性算法”这两个词肯定不陌生。这是多智能体系统里最基础、也最常用的一套协议:每个机器人只跟有限几个邻居交换位置信息,每个个体都按同一个局部规则更新自己的运动&…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑