这张工单是早上9点14分进来的,标题只写着"bug??",连一句寒暄都没有。一位名叫Faisal的读者收藏了一辆2020款日产途乐Platinum,白色车身、米色内饰,两天后却发现另一条listing下挂着看起来一模一样的车,ID不同,卖家名字也不同,价格便宜了8,000迪拉姆。他想知道我们的平台是不是重复录入了数据——如果是,他还怎么信任我们的定价。
问得有道理。这周我们平台上有1,108,535条在售listing,覆盖73个地区、1,375个数据源,光是阿联酋一地就有59,393条,分别由dubizzle.py、opensooq_uae_scraping_task.py等互相独立的爬虫抓取,这些爬虫访问的是完全不同的网站,用的是完全不同的listing结构。日产在我们系统里全球共有42,342条记录。而在这一大堆数据里,恰好有两辆途乐,在Faisal看来就像同一辆车挂了两个价签。
咖啡还没煮好,我就把这两条记录调了出来。同一年款、同一配置、同一外观颜色,里程数只差11公里——接近到可能是四舍五入,但还不足以证明什么。电话号码不同,不过OpenSooq那条的号码其实是一个仅支持WhatsApp的Business账号,这本身就是个信号。发布日期相差四天。还有一个Faisal没提到的细节:价格较低的那条listing的内饰照片里,挡风玻璃上还贴着UAE Pass的注册贴纸——这是经销商在车辆易手过渡期常常懒得撕掉的那种。
| OpenSooq listing | Dubizzle listing | |
|---|---|---|
| 价格 | 79,000迪拉姆 | 87,000迪拉姆 |
| 里程 | 61,200公里 | 61,211公里 |
| 发布时间 | 第1天 | 第5天 |
| 联系方式 | WhatsApp Business | 个人手机 |
| 可见注册贴纸 | 是 | 否 |
这种特征组合——一个WhatsApp Business号码、略高的价格、照片明显是在经销商院子里而非私人车道上拍的——正是"寄售转手"的典型标志。我的判断,而且我敢打赌是对的:某位车主早在这周初就把这辆车卖给或寄售给了一名中间商,中间商四天后在第二个平台上以加价重新挂牌,同时却没有让原来那条广告下架。于是在这段时间重叠期内,同一辆实体途乐同时以两个价格挂在两个地方。这种情况在这个市场上司空见惯。这里的路边经销商常常同时把库存挂在三四个平台上,车一旦易手也不见得会立刻把旧帖子撤下来。
真正影响这张工单处理结果的是这一点:我们不会合并这类记录,以后也不会。我们的去重逻辑只在单一数据源内部生效——比如同一个listing ID在重新抓取时再次出现——但刻意从不跨数据源按VIN合并,哪怕我们相当确信是同一辆车。在回复Faisal之前,我特意对照了我们自己定的规则重新确认了一遍,因为很容易会想"这不是显然该合并吗,明明是同一辆车"。但拥有同一VIN的两个卖家,在功能上其实是两个独立的市场参与者,各自给出了独立的报价;把他们当作重复数据处理,就等于悄悄从数据集里删掉了其中一位卖家的价格信号——而这恰恰是那种会悄无声息地侵蚀低于市场价模型准确性的操作。我们平均每天标记出大约12,823条相对于所在地区群组偏低价的listing,而这个数字只有在每一条在售报价都留在池子里时才有意义,不管它看起来多么"重复"。
所以我如实告诉了Faisal:这不是bug,大概率是转手交易,而他盯着看的那8,000迪拉姆价差也不是噪音——那正是他那周搜索结果里最明显的一个低于市场价信号,大大方方地摆在那里。事实上,那条OpenSooq listing正是当天被标记的"优惠车源"之一,价格低于迪拜和沙迦六辆同配置Platinum途乐的报价。他在无意间撞上了一堂两层含义的课:看起来重复的listing通常只是分发渠道的怪现象,而不是数据错误;而这对listing里那条"看起来不对劲"的,往往才是最该先打电话的那条。
多年前我在沙迦采访过一位经销商,他说得比我在文字里写的更直白:"车不在乎自己挂在多少个网站上,说话的是价格。"他说得没错,而这基本上就是我们坚持绝不把两个卖家合并成一条记录的全部理由。
到下午早些时候,我在FAQ里加了一条关于"疑似重复listing"的说明,主要是想让下一个Faisal能立刻得到答案,而不必再让我们花一整天去调查。但我没有改动去重规则本身——同源、同ID,仅此而已。两个卖家、同一个VIN,依旧是两条listing。如果你也曾发现自己梦寐以求的那辆车似乎挂了两遍,别急着认定是网站出了问题。先看看谁开价更低,再想想为什么。



