文章摘要
Nicholas Khami作为Trieve的创始人,发现Mintlify的搜索功能存在竞态问题,导致搜索结果不准确。尽管他曾在Slack上提出此问题,但未得到解决。加入Mintlify团队后,他通过添加AbortController修复了这一问题,确保搜索结果始终与用户当前输入的内容相关。
文章总结
标题:无法提交PR,于是我加入公司自己修复了问题
2025年7月30日,Nicholas Khami
一年多以来,我一直被Mintlify上的一个搜索问题困扰,这个问题导致了竞态条件和混乱的搜索结果。有趣的是,我正是Trieve公司的创始人,这家公司为Mintlify的30,000多个文档站点提供搜索服务,然而他们的去抖动搜索查询在用户输入时并未被中止。这种竞态条件使得搜索结果有时显得质量低下,因为系统会返回用户输入前几个字符时的查询结果。
作为提供搜索服务的公司创始人,每次用户遇到这些混乱的结果时,我都觉得这对Trieve的形象是一种负面影响。
修复过程
现在,我加入了Mintlify团队,终于有机会修复这个问题。我在去抖动搜索函数中添加了AbortController,这样当新的查询发起时,之前的查询就会被中止。这意味着搜索结果始终与用户当前输入的内容相关。
能够最终修复困扰自己的问题,有一种深深的满足感。这让我想起了George Hotz在2022年加入Twitter的那一周,他雄心勃勃地计划修复Twitter搜索,虽然最终被复杂性所挫败,但在戏剧性退出前,他还是成功修复了一个有用的登录弹窗问题。这是典型的黑客自负与现实碰撞,但最终还是有所成就。
我一直钦佩那些既是黑客又是企业家的工程师——他们看到问题就会去解决。能够在这里做类似的事情(虽然没有戏剧性的退出),感觉像是朝着这种直接处理问题的职业方向迈出了一小步。
开源的力量
我倾向于尽可能使用和构建开源软件,而这次的情况正是开源优势的一个绝佳例子。
在开源项目中,当你遇到一个bug或痛点时,你可以自己修复它。如果在我为搜索竞态条件困扰的那一年里,这是一个开源项目,我本可以提交一个包含AbortController修复的拉取请求,从而为自己(以及成千上万的其他用户)省去日常的烦恼。
然而,直到我加入公司并获得了代码库的访问权限,这个问题才得以解决。开源带来的即时赋权感是无可比拟的,尽管我理解许多公司出于商业原因选择不同的模式。
自我庆祝
如果Mintlify的搜索现在感觉更加清晰和响应迅速,那都是因为我!我修复了一个困扰我一年多的问题,能够为产品做出这样的小改进,感觉非常棒。
我迫不及待想要做更多。通过不断修复这些小问题,产品才能变得传奇。能够最终拥有修复那些困扰你的事物的力量,即使它们很小,也让人感到深深的满足。
尤其是当它们很小的时候。
评论总结
评论内容总结:
对代码和开源的认可:
- 评论2认为代码是最好的文档,开源是其最大的优势。
- 引用:"Code is always the best documentation and the best thing about opensource."
- 评论2认为代码是最好的文档,开源是其最大的优势。
对George Hotz事件的回忆与争议:
- 评论3提到George Hotz在Twitter的短暂经历,有人认为他夸下海口后迅速离开,但也有人认为他解决了登录弹窗问题。
- 引用:"George Hotz boldly claimed that he could 'fix Twitter search' faster than those lazy Twitter devs, only to bail almost immediately."
- 评论3提到George Hotz在Twitter的短暂经历,有人认为他夸下海口后迅速离开,但也有人认为他解决了登录弹窗问题。
对问题解决的看法:
- 评论6认为问题已解决,应该继续前进。
- 引用:"Problem solved, so... time to move on?"
- 评论6认为问题已解决,应该继续前进。
对公司雇佣行为的质疑:
- 评论7质疑公司派遣员工到其他公司进行短期工作是否合法。
- 引用:"I wonder if it's legal for corporations to have employees that they send off to get hired at other companies..."
- 评论7质疑公司派遣员工到其他公司进行短期工作是否合法。
对用户体验的改进建议:
- 评论9提到在搜索功能中添加AbortController,确保搜索结果与用户当前输入相关。
- 引用:"I added an AbortController to the debounced search function, so that it aborts any previous queries when a new one is made."
- 评论9提到在搜索功能中添加AbortController,确保搜索结果与用户当前输入相关。
对文章内容的批评:
- 评论10指出文章未提及雇佣过程,认为这是整个事件中最重要的部分。
- 引用:"The article says nothing about the hiring, which is kind of the most important part of the whole escapade."
- 评论10指出文章未提及雇佣过程,认为这是整个事件中最重要的部分。
对Google Maps功能的吐槽:
- 评论12抱怨Google Maps无法记住用户偏好的距离单位,认为这是荒谬的。
- 引用:"I must have changed that back from miles once a fortnight since Google Maps launched 20 years ago."
- 评论12抱怨Google Maps无法记住用户偏好的距离单位,认为这是荒谬的。
对网站体验的反馈:
- 评论13提到在iOS + Firefox上访问时,网站会自动播放全屏视频并切换为暗模式。
- 引用:"FYI this autoplays full screen video when I visit on iOS + Firefox."
- 评论13提到在iOS + Firefox上访问时,网站会自动播放全屏视频并切换为暗模式。
对个人经历的分享:
- 评论14分享了自己在亚马逊被误封后通过内部联系解封的经历。
- 引用:"After I got hired, I reached out to the guy in charge of the anti-fraud team at Amazon, and got unbanned."
- 评论14分享了自己在亚马逊被误封后通过内部联系解封的经历。
总结:评论涉及对代码、开源、雇佣行为、用户体验、文章内容、网站体验等多个方面的讨论,既有对问题的解决和功能的改进建议,也有对个人经历的分享和对事件的回忆与争议。