Condividi tramite


Trattini '-' ignorati nella ricerca con query SQL full-text e MSIDXS

Questo articolo consente di risolvere il problema che si verifica quando si esegue una ricerca full-text sui dati di tipo carattere di SQL Server o quando si usa una query distribuita SQL con il provider OLE DB (MSIDXS) di Microsoft Index Server e una ricerca di espansione del prefisso per una parola composta contenente un trattino (ad esempio, XYZ-A*).

Si applica a: SQL Server
Numero KB originale: 200043

Sintomi

Quando si esegue una ricerca full-text sui dati di tipo carattere di SQL Server o quando si usa una query distribuita SQL con il provider OLE DB di Microsoft Index Server (MSIDXS) e una ricerca di espansione del prefisso per una parola composta contenente un trattino (ad esempio, "XYZ-A*"), i risultati generati potrebbero non essere come previsto.

Causa

Una ricerca full-text considera una parola come una stringa di caratteri senza spazi o punteggiatura. L'occorrenza di un carattere non alfanumerico può interrompere una parola durante una ricerca. Poiché la ricerca full-text di SQL Server è un motore basato su parole, la punteggiatura in genere non viene considerata e viene ignorata durante la ricerca nell'indice. Pertanto, una CONTAINS clausola come CONTAINS(testing, "computer-failure") corrisponderebbe a una riga con il valore , L'errore di trovare il computer sarebbe costoso.

Soluzione alternativa

Per risolvere il problema, provare uno dei metodi seguenti:

  • Usare solo caratteri alfanumerici quando si usano le funzionalità dell'indice full-text di SQL Server.

  • Dove è necessario usare un carattere non alfanumerico nei criteri di ricerca (principalmente il carattere trattino - ), usare la clausola Transact-SQL LIKE anziché i FULLTEXT predicati o CONTAINS .

Ulteriori informazioni

Microsoft SQL Server versione 7.0 consente di eseguire una query full-text sui dati di tipo carattere archiviati nelle tabelle di SQL Server. È anche possibile usare una query distribuita SQL con il provider MSIDXS per cercare i dati del file system. L'uso del trattino (-) in una ricerca di prossimità non è supportato e può dare risultati imprevisti.

Riferimenti

  • Per altre informazioni sulla ricerca full-text di SQL Server, vedere la documentazione online di SQL Server.

  • Per altre informazioni sull'uso della clausola CONTAINS con il provider Microsoft Index Server (MSIDXS), vedere la documentazione di Index Server nella documentazione di Windows NT 4.0 Option Pack.