Ci ho pensato e ho cercato di trovare soluzioni su come eseguire ricerche confuse in un database, se per esempio un utente digita un errore di ortografia. Qualche evidente problema con la logica dietro questo? Funzionerà e è già stato fatto prima?
Il nostro tavolo desideriamo cercare:
**tblArticles**
Body - Soundex_Body - CharacterCoded_Body
Quindi memorizziamo il corpo del testo non elaborato per la visualizzazione fisica. Le altre 2 colonne vengono utilizzate per ricerche precompilate nel modo seguente:
Soundex
Il corpo è diviso in parole e tradotto nella sua versione soundex. IE, il corpo risultante potrebbe essere qualcosa del tipo:
H252 B54 C23 E33... etc
Quindi qualcuno potrebbe entrare in 'dinosore', e il corpo dell'articolo legge 'dinosauro' entrambi valutano B26. Quindi eseguiamo un LIKE sul valore soundex del termine di ricerca.
Carattere codificato
Data una mappatura dei caratteri che associa i caratteri ai numeri primi, IE:
h = 2
e = 3
l = 5
o = 7
p = 11
c = 13
help = 2*3*5*11 = 330
hello = 2*3*5*5*7 = 1050
hell = 2*3*5*5 = 150
hlep = 2*5*3*11 = 330
cello = 13*3*5*5*7 = 6825
Se un utente intendesse digitare "ciao" ma ha scambiato due o più caratteri, ad esempio "hlelo", valuterebbe con lo stesso numero. Dividi il corpo crudo in parole, codifica in primo piano ogni parola e memorizza nel database dandoti un campo simile a:
330 6825 330 1050... etc
Possiamo quindi cercare su questo valore per abbinare i mistypes.
Benefici
- Typos protetto contro
- Ortografia fonetica errata protetta da
- Più amichevole non madrelingua inglese
- Funzionerà in qualsiasi lingua (dove funziona soundex)
Commenti e pensieri? Una sorta di ricerca a più livelli. Ovviamente puoi ponderare i valori di ritorno per renderlo ancora migliore (vale a dire che una corrispondenza letterale del corpo del testo vale di più), ma è una buona soluzione per errori di ortografia e madrelingua inglese che effettuano ricerche?