Ricevo il seguente errore nel mio database SQL Server 2008 R2:
Impossibile utilizzare un predicato
CONTAINS
oFREETEXT
nella tabella o nella vista indicizzata "tblArmy" perché non è indicizzato a testo completo.
Ricevo il seguente errore nel mio database SQL Server 2008 R2:
Impossibile utilizzare un predicato
CONTAINS
oFREETEXT
nella tabella o nella vista indicizzata "tblArmy" perché non è indicizzato a testo completo.
Risposte:
Assicurati di aver installato la funzione di ricerca full-text.
Crea un catalogo di ricerca full-text.
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
Crea indice di ricerca full-text.
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
Prima di creare l'indice, assicurarsi che:
- non si disponga già dell'indice di ricerca full-text sulla tabella poiché è consentito un solo indice di ricerca full-text su una tabella
- esiste un indice univoco sulla tabella. L'indice deve essere basato su una colonna a chiave singola, che non consente NULL.
- esiste un catalogo full-text. È necessario specificare esplicitamente il nome del catalogo full-text se non esiste un catalogo full-text predefinito.
È possibile eseguire i passaggi 2 e 3 in SQL Server Management Studio. In Esplora oggetti, fai clic con il pulsante destro del mouse su una tabella, seleziona la Full-Text index
voce di menu e quindi la Define Full-Text Index...
voce di sottomenu. La procedura guidata per l'indicizzazione di testo completo ti guiderà attraverso il processo. Creerà anche un catalogo di ricerca full-text per te se non ne hai ancora.
Puoi trovare maggiori informazioni su MSDN
Una soluzione alternativa per CONTAINS
: se non si desidera creare un indice di testo completo sulla colonna e le prestazioni non sono una delle priorità, è possibile utilizzare l' LIKE
istruzione che non necessita di alcuna configurazione precedente:
Esempio: trova tutti i prodotti che contengono la lettera Q:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
È necessario definire Full-Text-Index
su tutte le tabelle nel database in cui è necessario utilizzare una query con la CONTAINS
quale ci vorrà del tempo.
Invece puoi usare il LIKE
che ti darà risultati immediati senza la necessità di regolare le impostazioni per le tabelle.
Esempio:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
Lo stesso risultato ottenuto con CONTAINS
può essere ottenuto con LIKE
.
Potrebbe essere necessario abilitare la tabella per l'indicizzazione di testo completo .
devi aggiungere l'indice di testo completo su campi specifici che desideri cercare.
ALTER TABLE news ADD FULLTEXT(headline, story);
dove "notizie" è la tabella e i campi "titolo, articolo" che non verranno attivati per la ricerca a testo completo
C'è un'altra soluzione per impostare la colonna Full text su true.
Queste soluzioni, ad esempio, non hanno funzionato per me
ALTER TABLE news ADD FULLTEXT(headline, story);
La mia soluzione.
PROSSIMI PASSI
ricaricare
Versione di mssql 2014
Select * from table
where CONTAINS([Column], '"A00*"')
agirà come% come
where [Column] Like 'A00%'