2010-08-07 14 views
5

Sto tentando di cercare sottostringhe lunghe e approssimative in un database di grandi dimensioni. Ad esempio, una query potrebbe essere una sottostringa di 1000 caratteri che potrebbe differire dalla corrispondenza di una distanza di Levenshtein di diverse centinaia di modifiche. Ho sentito che i q-grammi indicizzati potrebbero farlo, ma non conosco i dettagli di implementazione. Ho anche sentito che Lucene potrebbe farlo, ma l'algoritmo di levenshtein di Lucene è abbastanza veloce per centinaia di modifiche? Forse qualcosa fuori dal mondo del rilevamento di plagio? Qualsiasi consiglio è apprezzato.Ricerca di sottostringhe (molto) approssimative in un database di grandi dimensioni

+0

Per motivi di interesse, quali sarebbero le informazioni sulla stringa che stai cercando: informazioni testuali o qualcosa di strutturato in una forma diversa? –

risposta

1

Q-grammi potrebbe essere un approccio, ma ce ne sono altri, come Blast, BLASTP - che vengono utilizzati per proteine, le partite di nucleotidi ecc

La biblioteca Simmetrics è una raccolta completa di approcci distanza stringa.

+0

Si dovrebbe anche guardare la somiglianza cosentina – Mikos

1

Lucene non sembra essere lo strumento giusto qui. Oltre ai buoni consigli di Mikos, ho sentito parlare di AGREP, FASTA e Locality-Sensitive Hashing(LSH). Credo che un metodo efficiente dovrebbe innanzitutto ridurre lo spazio di ricerca, e solo allora eseguire punteggi più sofisticati sui restanti candidati.

Problemi correlati