Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Impossibile utilizzare un predicato CONTAINS o FREETEXT su una tabella o una vista indicizzata perché non è indicizzato full-text

  1. Assicurati di aver installato la funzione di ricerca full-text.

  1. Crea un catalogo di ricerca full-text (se necessario)

    Per prima cosa controlla se esiste già un catalogo

      select *
      from sys.fulltext_catalogs
    

    Se non viene trovato alcun catalogo, creane uno

      use [DatabaseName]
      create fulltext catalog FullTextCatalog as default
    

    puoi verificare che il catalogo sia stato creato come sopra

  2. Crea indice di ricerca full-text.

      create fulltext index on Production.ProductDescription(Description)
      key index PK_ProductDescription_ProductDescriptionID
    

    Prima di creare l'indice, assicurati:
    - non hai già un indice di ricerca full-text nella tabella poiché solo un indice di ricerca full-text è consentito su una tabella
    - esiste un indice univoco su la tavola. L'indice deve essere basato su una colonna a chiave singola, che non consente NULL.
    - esiste un catalogo full-text. È necessario specificare il nome del catalogo full-text in modo esplicito 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 Full-Text index voce di menu e quindi Define Full-Text Index... voce di sottomenu. La procedura guidata per l'indicizzazione del testo completo ti guiderà attraverso il processo. Creerà anche un catalogo di ricerca full-text per te se non ne hai ancora uno.

Puoi trovare maggiori informazioni su MSDN

Dopo aver seguito i passaggi sono necessari alcuni minuti affinché venga creato l'indice di ricerca full text (questo dipende dalle dimensioni della tabella e dai dati della colonna)