Domanda

Vorrei eseguire una ricerca con MSSQL Motore di testo completo in cui dato il seguente input dell'utente: "Piazza Hollywood"

Voglio che i risultati di avere sia Hollywood e la piazza [s] in loro.

Posso creare un metodo sul server web (C #, ASP.NET) per produrre dinamicamente un'istruzione SQL come questo:

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*"')
AND CONTAINS(TITLE, '"square*"')

Abbastanza facile. TUTTAVIA, vorrei che questo in una stored procedure per il beneficio maggiore velocità e sicurezza per l'aggiunta di parametri.

Posso avere la mia torta e la moglie ubriaca?

È stato utile?

Soluzione

Sono d'accordo con sopra, guardare in clausole AND

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*" AND "square*"')

Tuttavia non si dovrebbero avere per dividere le frasi di ingresso, è possibile utilizzare la variabile

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,@parameter)

a proposito cercare il termine esatto (contiene) ricerca di qualsiasi termine nella frase (testo libero)

Altri suggerimenti

L'ultima volta che ho dovuto fare questo (con MSSQL Server 2005) ho finito per spostare l'intera funzionalità di ricerca verso Lucene (la versione di Java, anche se Lucene.Net ora esiste credo). Ho avuto grandi speranze della ricerca a testo completo, ma questo problema specifico mi ha infastidito così tanto che ho rinunciato.

Hai provato a usare l'operatore logico nella stringa? Io passo in una stringa raw al mio sproc e roba 'E' tra le parole.

http://msdn.microsoft.com/en-us/library /ms187787.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top