Ecco il mio problema. Per esempio ho una tabella Prodotti che contiene un campo, Nome:Utilizzare SOUNDEX() parola per parola su SQL Server
Products
ID | Name | ..
1 | "USB Key 10Go"
2 | "Intel computer"
3 | "12 inches laptop computer"
...
Attualmente sto implementando un semplice motore di ricerca (SQL Server e ASP .NET, C#) per un iPhone web-app e vorrei usare la funzione di SQL Server SOUNDEX()
.
Il fatto è che non posso utilizzare direttamente SOUNDEX
sul Nome campo. (Questo sarebbe irrilevante dal momento che ci sono diverse parole nel nome.) Vorrei applicare la funzione SOUNDEX
a ogni parola dal campo Nome, e poi vedere se qualcuno di questi corrisponde alla parola chiave ricercata.
Se qualcuno ha qualche idea su come farlo, sarebbe fantastico.
Quanti record sono presenti nella tabella prodotti. Una soluzione di programmazione (ad esempio, l'analisi del campo del nome in un campo separato e quindi l'applicazione di soundex a ciascuno) verrà eseguita lentamente in una query. Potresti fare meglio a cambiare la struttura del tuo database, se questa è una possibilità. – Sparky
sì, se il set di dati è grande per qualsiasi confronto, ci vorrà un'eternità per l'esecuzione. – DForck42
Sì, il database è di grandi dimensioni, questo è quello che sto facendo attualmente (sul codice C# .NET, usando regexp per contare il numero di parole e aggiungere rilevanza per me stesso ai risultati della ricerca) ma è molto lento. In questo momento sto esaminando FREETEXT ma ho riscontrato qualche problema (vedi http://stackoverflow.com/questions/1923806/how-to-turn-on-thelfulltext-mode-on-ms-sql-2005) . – Charles