Benötigen eine effiziente Möglichkeit zur Suche nach der folgenden spezifischen Anforderung

StackOverflow https://stackoverflow.com/questions/1703367

  •  19-09-2019
  •  | 
  •  

Frage

Ich habe einen bestimmten Dateinamen enthalten Dateien (sagen wir mal, Keyword) in einem Verzeichnis zu suchen. Wenn es nur wenige Schlüsselwörtern durchsucht werden sollten, konnte ich regelmäßige Suche verwendet haben (wie ein Array von Dateinamen zu schaffen, in dem angegebenen Verzeichnis mit Wohnsitz und dann jeden Dateinamen mit dem angegebenen Stichwort suchen). Da ich sehr große Anzahl von Keywords dynamisch suchen muß, es ist nicht effizient mit regulärem zu suchen. Ich hatte einige Ideen:

1.Using Hashing (aber nicht klar, wie es zu entwerfen)

2.Using Bloom Filter für die Suche (bitte googeln, wenn u wissen es nicht, seine Arbeits sehr interessant ist!): Problem Blüte Filter in Verwendung ist „Falsch positive Ergebnisse sind möglich, aber falsch-negative Ergebnisse sind nicht“. Ich könnte einige Ergebnisse vermissen ....

War es hilfreich?

Lösung

Vor der Suche, erstellen Sie eine trie aller positiven Ergebnissen geführt.

die Trie Erstellen nehmen O (n), wobei n die Anzahl der Wörter ist.

Um zu suchen, versuchen, das Wort gegen den Trie übereinstimmen. Look-ups sind in O getan (m), wobei m die Länge des Wortes Suche.

Insgesamt Laufzeit:. O (n + nm) => O (nm), um alle Wörter zu finden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top