Il comportamento che hai descritto è una conseguenza dell'utilizzo di lista sistema stopword è corretta. Questo è un comportamento previsto. "Io" è una parola d'arresto, che esiste nell'elenco delle parole d'arresto del sistema. Elenco di stopword di sistema utilizzato per impostazione predefinita dal processo di indicizzazione dei dati.
Potete verificare voi stessi con questo script:
select * from sys.dm_fts_parser('"KA-ME"', 1033, 0, 0)
Il terzo parametro qui è identificatore lista stopword. Quando si passa NULL, le stopword non vengono identificate durante l'analisi e viene visualizzato "ME" di tipo "Corrispondenza esatta". Quando si passa 0 come terzo parametro, viene utilizzato l'elenco di stopword di sistema e "ME" sarà di tipo "Word Noise". Ciò significa che SQL Server non lo salverà nell'indice FTS per la ricerca.
Come accennato da Raihan, è possibile disattivare l'elenco delle parole d'arresto del sistema, ma per quanto mi riguarda, disattivare completamente le stopword è un martello troppo grande, soprattutto per il database SQL di Azure, perché è necessario pagare spazio aggiuntivo (gli indici FTS sono memorizzati in lo stesso database nelle tabelle interne). Creare una nuova (più piccola) lista di parole chiave e usarla per FTS potrebbe essere una soluzione migliore.
fonte
2016-07-06 11:39:22
grazie, ottima risposta! –