2016-06-30 6 views
0

Ich habe eine 30kb Textdatei mit Leerzeichen begrenzte URLs. Ich muss eine Überprüfung der vom Benutzer eingegebenen Zeichenkette gegen die Zeichenketten in der Textdatei durchführen. Was wird der effizienteste Weg sein, dies zu erreichen?effiziente Möglichkeit zum Suchen nach einer Zeichenfolge in einem großen Textdokument in Javascript

  1. Erstellen Sie ein Set in redis; führe sismember am Set für die Suche aus.
  2. Laden Sie die Datei in eine Variable in Nodejs Server und führen Sie indexOf-Operation (ich denke, dies wird wahrscheinlich zu blockieren!).
  3. Einige andere Methode, ich bin nicht bewusst ...

(Die Dateigröße bis max 80kb erhöhen könnte)

+0

30 kb ist auf keinen Fall groß. Redis? Worüber redest du? Das ist eine winzige Datei. Laden Sie es in den Arbeitsspeicher, teilen Sie es an der Stelle, fertig. – Tomalak

+0

indexOf wird keine Blockierung in der Größe von ~ 50kb sein? – vjjj

+0

Bei welcher Größe würde indexOf blockieren? – vjjj

Antwort

3

beschäftige ich mich mit 30 MB 1 GB 1TB-Dateien. 30KB klingt klein, aber abhängig von den Umständen kann es sehr groß sein. Stellen Sie sich vor, Ihr Server ist aufgrund der vielen Besucher sehr ausgelastet und Sie möchten diesen Vorgang durchführen, während viele Besucher anwesend sind. Der Server wird auf jeden Fall eine starke Serverbelastung erfahren. Ich empfehle, über einen effizienten Algorithmus oder ein Tool nachzudenken, das Ihnen dabei helfen kann. Frage: Warum können Ihre Daten nicht in Redis bleiben? Sie können ganz einfach eine Volltextsuche auf der Redis-Seite durchführen. Wenn dies nicht möglich ist, denken Sie darüber nach, eine Volltext-Suchmaschine auf Ihrer Node.js-Seite zuzuordnen oder einen effizienten Suchalgorithmus zu entwickeln. Hier ist, was ich tun würde

Speichern Sie Wörter als Index, zum Beispiel haben Sie diesen Text "Lorem Ipsum ist einfach Dummy-Text der Druck- und Satzindustrie. Lorem Ipsum ist der Standard-Dummy-Text der Industrie seit den 1500er Jahren gewesen, als ein unbekannter Drucker eine Galeere des Typs nahm und es zu einem Musterbuch zusammenbaute, hat er nicht nur fünf Jahrhunderte überlebt, sondern auch den Sprung in den elektronischen Satz, der im Wesentlichen unverändert blieb und in den 1960er Jahren mit der Veröffentlichung von Letraset populär wurde Blätter mit Lorem-Ipsum-Passagen und neuerdings mit Desktop-Publishing-Software wie Aldus PageMaker einschließlich Versionen von Lorem Ipsum. "

Crawlen Sie diesen Text und speichern Sie jedes Wort und ihre Position innerhalb des großen Textes. Lorem ist bei 0 Ipsum 7

ist Wenn Lorem wieder in späteren Text auftauchen, hängen Sie einfach Schlüssel Lorem Lorem: 0118

Dann können Sie leicht für Schlüssel suchen und sehen, ob das Wort oder nicht vorhanden ist .

Verwandte Themen