Possiedo quello che penso sia uno scenario molto semplice, ma quello che ho letto fa sembrare che questo non sia facile utilizzando gli indici e il catalogo completo di SQL Server.Più colonne con ContainsTable e logica booleana con indice di testo completo
Ho 2 colonne, nome e cognome. Voglio supportare la ricerca full-text su di essi in modo tale che se qualcuno digita "John Smith" persone con una corrispondenza su sia sia prima che l'ultima arrivino per prime.
Sebbene sia facile creare un indice su più colonne e facile ricercare più colonne, il punteggio non riflette più colonne.
SELECT [Key], Rank
FROM CONTAINSTABLE([User], (FirstName,LastName), '<CLAUSE_HERE>')
- Se CLAUSE_HERE è "John Smith" non ottengo risultati, perché quella frase non esiste in entrambi i campi.
- Se è "john OR smith" ottengo tutti gli utenti con entrambi i nomi in entrambi i campi, ordinati in un ordine non utile.
- Se è "john AND smith" non ottengo risultati, perché nessuno dei due campi contiene entrambe le parole.
sembra l'unica soluzione è quella di autogenerate una query che viene eseguito containstable
su ogni campo, non certo per la matematica, somma i punteggi, ecc Fa questo diritto del suono? C'è un modo più semplice per aggirarlo? La mia query attuale contiene molti più campi: questo è un esempio semplificato.
Completamente funzionante !! Perché il testo completo non lo fa automaticamente? Ho pensato che applicare il testo completo su più colonne avrebbe funzionato in modo così immediato. non lo so. –