Ich habe eine Datei (Fasta-Datei, um genau zu sein), die ich indizieren möchte, so dass ich schnell einen Teilstring innerhalb der Datei finden und dann den Speicherort innerhalb der ursprünglichen Fasta-Datei finden kann.On Disk Substring Index
Dies wäre in vielen Fällen einfach zu tun, mit einem Trie oder Teilstring-Array, leider sind die Zeichenfolgen, die ich indizieren muss 800 + MBs, was bedeutet, dass sie in Speicher in inakzeptabel machen, so suche ich nach einem vernünftigen Möglichkeit, diesen Index auf dem Datenträger mit minimaler Speicherauslastung zu erstellen.
(edit Klärungs)
Ich bin nur in den Headern von Proteinen interessiert, so dass für die größte Datenbank mich interessiert, das etwa 800 MBs von Text ist.
Ich möchte in der Lage sein, eine genaue Teilzeichenfolge innerhalb von O (N) Zeit basierend auf der Eingabezeichenfolge zu finden. Dies muss auf 32-Bit-Rechnern nutzbar sein, da es an zufällige Personen verschickt wird, von denen nicht erwartet wird, dass sie 64-Bit-Maschinen haben.
Ich möchte in der Lage sein, gegen jeden Wortwechsel innerhalb einer Zeile, bis zum Ende der Zeile (obwohl Zeilen mehrere MBs lang sein können) zu indizieren.
Dies verdeutlicht hoffentlich, was benötigt wird und warum die aktuellen Lösungen nicht aufleuchten.
Ich sollte auch hinzufügen, dass dies innerhalb von Java getan werden muss, und muss auf Client-Computern auf verschiedenen Betriebssystemen erfolgen, so dass ich keine OS-spezifische Lösung verwenden kann, und es muss eine programmatische Lösung sein.
Vielleicht möchten Sie ein wenig weiter ausführen. Was ist schnell? Gibt es Einschränkungen für die Größe des Teilstrings, nach dem Sie suchen? Enthält die Datei eine große Zeichenfolge oder mehrere kleinere, die separat gesucht werden müssen? Festplattengröße? "Minimale" Speichernutzung? – mweerden
Betriebssystem? Müssen Sie die Suchzeichenfolge neu eingeben oder suchen Sie nach ganzen Zeichenfolgenübereinstimmungen? –