什么算法在Chrome搜索中使用?

Tat*_*tat 8 search full-text-search google-chrome

假设您正在使用Chrome,当我按下Cmd + F或Ctrl + F时...我输入一个字符,它会搜索整个页面并为我突出显示该文本.它立即搜索.Chrome使用什么样的算法?为什么它可以这么快打字和搜索?有什么想法吗?谢谢.

Moh*_*our 20

您可以在此处找到有关架构的更多信息:http: //www.chromium.org/developers/design-documents/find-bar

我将尝试解释更详细的响应,这将有助于您在下次需要更多内容时浏览Chromium源代码.

当用户在Chromium中启动查找时,我们基本上向观察者注册通知以获得结果.每个查找调用都是异步的,搜索结果将由渲染器作为通知消息发送.这在FindBarController :: Observe中处理

按下next/previous/enter时发生的第一件事,FindBarView :: ButtonPressed告诉当前的Tab内容开始查找TabContents :: StartFinding.您会注意到,在该段代码中,它向IPC发送异步请求.您可以在此处查看我们的发送方式:RendererViewHost :: StartFinding

由于Chromium是一个多进程架构,我们通过IPC消息处理程序发送消息.您可以查看上面的链接,了解邮件的发送方式.渲染主机将消息发送到渲染视图RenderView :: OnFind.从那时起,您知道查找逻辑显然在WebKit源代码中,而不是在Chromium中.WebFrameImpl ::找

现在在WebKit中,它找到字符串的逻辑在Editor :: findString中,如果你注意到算法是什么,基本上使用WebKit/WebCore/editing/TextIterator.h在给定范围内遍历DOM.WebKit中的注释不是与Chromium相比,这是很好的,但代码的质量非常高,因此您可以毫不费力地阅读3000+ loc.

我告诉你这一切的原因是为了你的利益,所以如果你想了解更多关于Chromium/WebKit,你知道如何查看源代码:)我强烈推荐http://dev.chromium.org/开发商

  • 真棒的答案:) (2认同)