ho un tabellone con n campi
l'utente digita una o piu parole (come un motore di ricerca)
come deve essere la struttura della query per cercare tutti i termini in tutti i campi ?
Dove metto gli AND e gli OR ?
ho un tabellone con n campi
l'utente digita una o piu parole (come un motore di ricerca)
come deve essere la struttura della query per cercare tutti i termini in tutti i campi ?
Dove metto gli AND e gli OR ?
Oddio, non saprei certo indicarti nemmeno sommariamente l'algoritmo usato da google, ma una vaga idea per una ricerca del sito posso dartela.Originariamente inviato da alspam
ho un tabellone con n campi
l'utente digita una o piu parole (come un motore di ricerca)
come deve essere la struttura della query per cercare tutti i termini in tutti i campi ?
Dove metto gli AND e gli OR ?
Per prima cosa devi lavorare sull'input dell'utente: fare in modo ad esempio che se scrive "frutti di mare" tra virgolette vada a cercare proprio i testi che contengono "frutti di mare"... Se invece scrive frutti mare, devi fare in modo che trovi tutti i testi che contengano sia frutti, sia mare.
In pratica devi fare in modo che la stringa sql si costruisca dinamicamente in base all'input dell'utente. Ovviamente sarà necessario usare i vari AND e OR... ma detto così mi rendo conto che non è di grande aiuto.
Prova passo passo e poi, se hai dubbi o problemi, troverai nel forum qualcuno in grado di darti indicazioni più precise.
Ho provato cosi'
arr = split(txt, " ")
n_elementi = ubound(arr) - lbound(arr) + 1
Set Rs1 = Server.CreateObject("ADODB.Recordset")
str_query = " SELECT * FROM piani WHERE "
For i = 0 To n_elementi-1
str_query = str_query + "( [Titolo normalizzato] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Comune] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Provincia] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Regione] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Responsabilità secondaria] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [nomi di persona] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Anno di produzione] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Forma (Rapu)] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [norma] Like '%"&arr(i)&"%' "
str_query = str_query + "OR [Datazione fase iter] Like '%"&arr(i)&"%' )"
if i<n_elementi-1 then
str_query = str_query + " AND "
end if
Next
beh, mi pare già un buon punto di partenza
In questo modo trovi la corrispondenza di ogni singola parola inserita dall'utente in ogni campo del db. In alcuni casi anche questo tipo di ricerca potrebbe essere sufficiente.
In riferimento al codice che ho postato mi si critica il fatto che inserendo ad esempio: roma
(roma seguito da spazio)
la ricerca restituisce anche termini come romagna
Come faccio a forzare la ricerca a solo a roma ?
Guarda anche la ricerca di questo forum. Qui ad esempio ci sono dei radiobutton con la dicitura "trova il termine esatto".
Poi l'utente deve inserire * al termine della parola se vuole risultati con tutte le parole che iniziano con la chiave inserita.
Insomma, le soluzioni sono veramente tante. Dovresti valutare in base alle tue esigenze.