Angenommen, Sie verwenden Chrome, wenn ich Cmd + F oder Strg + F drücke ... Ich gebe ein Zeichen ein, es durchsucht die ganze Seite und markiert den Text für mich. Es sucht sofort. Welche Art von Algorithmus verwendet Chrome? Warum kann es so schnell tippen und suchen? irgendwelche Ideen dazu? Danke.
Hier finden Sie weitere Informationen zur Architektur: Ссылка
Ich werde versuchen, eine detailliertere Antwort zu erklären, die Ihnen helfen wird, das nächste Mal durch die Chromiumquelle zu navigieren, wenn Sie etwas mehr brauchen.
Wenn ein Benutzer einen Suchvorgang in Chromium einleitet, registrieren wir grundsätzlich eine Benachrichtigung an den Beobachter für die Ergebnisse. Jeder Suchaufruf ist asynchron und die Ergebnisse der Suche werden vom Renderer als Benachrichtigung gesendet. Dies wird in FindBarController :: Observe behandelt
Das erste, was passiert, wenn Sie die nächste / vorherige / Eingabe drücken, FindBarView :: ButtonPressed zeigt dem aktuellen Tab-Inhalt an, dass er TabContents :: StartFinding . Sie werden bemerken, dass in diesem Code eine asynchrone Anfrage an den IPC gesendet wird. Sie können sehen, wie wir sie hier senden: RendererViewHost :: StartFinding
Da Chrom eine Multiprozess-Architektur ist, senden wir Nachrichten über den IPC Nachrichtenhandler. Sie können den obigen Link anzeigen, um zu sehen, wie Nachrichten gesendet werden. Der Render-Host sendet eine Nachricht an die Renderansicht RenderView :: OnFind Von diesem Zeitpunkt an wissen Sie, dass die Suchlogik eindeutig im WebKit-Quellcode und nicht in Chrom steht. WebFrameImpl :: find
Im WebKit-Land befindet sich die Logik, in der die Zeichenfolge gefunden wird, in Editor :: findString und wenn Sie bemerken, was der Algorithmus ist grundsätzlich DOM durch eine angegebene Reichweite mit WebKit / WebCore / editing / TextIterator.h Die Kommentare in WebKit sind nicht so gut im Vergleich zu Chromium, aber die Qualität des Codes ist ziemlich hoch, so dass Sie kein Problem haben werden, mehr als 3000+ zu lesen.
Der Grund, warum ich Ihnen das alles sage, ist zu Ihrem Vorteil. Wenn Sie also mehr über Chromium / WebKit wissen wollen, wissen Sie, wie man durch den Quellcode schaut :) Ich empfehle Ссылка
Ich weiß nicht, welchen Algorithmus Chrome verwendet, aber ich nehme an, dass Sie die Antwort im Chromium Quellen
Bearbeiten:
Nachdem ich mir die Quellen kurz angeschaut habe, möchte ich auch vorschlagen, die Chromentwickler zu kontaktieren direkt ...
Reine Spekulation, aber ziemlich wahrscheinlich, dass es die Seite in Wörter (mit ihren zugehörigen Bereichen) tokalisiert, dann legt sie diese Wörter entweder in eine Radix Tree oder ein Trie und führt eine Präfix-Suche innerhalb des Baumes durch.
Warum sehen Sie sich den Quellcode von Chrome nicht an und schauen sich an, was sie für sich selbst tun?
Tags und Links search google-chrome full-text-search