Qual è il modo migliore per convertire i termini di ricerca inseriti da un utente, in una query che può essere utilizzato in una clausola in cui per la ricerca full-text interrogare una tabella e ottenere risultati rilevanti? Ad esempio, la seguente query immessa dall'utente:Conversione inserito dall'utente query di ricerca in cui la clausola per l'uso in ricerca full-text di SQL Server
+"e-mail" +attachment -"word document" -"e-learning"
dovrebbe tradursi in qualcosa di simile:
SELECT * FROM MyTable WHERE (CONTAINS(*, '"e-mail"')) AND (CONTAINS(*, '"attachment"')) AND (NOT CONTAINS(*, '"word document"')) AND (NOT CONTAINS(*, '"e-learning"'))
sto usando un query parser class in questo momento, che analizza la query inserite dagli utenti in token utilizzando un'espressione regolare e quindi costruisce la clausola where dai token.
Tuttavia, dato che questo è probabilmente un requisito comune in molti sistemi che utilizzano la ricerca full-text, sono curioso di sapere come altri sviluppatori hanno affrontato questo problema e se esiste un modo migliore di fare le cose.
L'ho provato e non è poi così bello. –
NB: l'articolo richiede la registrazione e l'iscrizione a una newsletter (quindi non è un problema se si può sopportare una cosa del genere) –
Questo funziona bene. Puoi vedere come implementarlo di seguito. – franzo