Eu tenho uma lista de palavras/frases em uma tabela phrases
. Eu tenho outra tabela com um catálogo de texto completo indexando a description
coluna.
Quero preencher uma tabela results
com um registro para cada frase, e a quantidade de vezes que essa frase foi encontrada na descrição:
INSERT INTO results(phrase, foundcount)
SELECT phrase,
(SELECT COUNT(*) FROM table WHERE CONTAINS(table.description, phrase))
FROM phrases;
Não importa o quanto eu tente, isso resulta no erro:
Incorrect syntax near `phrase`. Expecting STRING, TEX_LEX, or VARIABLE
Eu realmente prefiro não usar um cursor apenas para poder atribuir cada phrase
um a uma variável. Essa é realmente a única opção?
Tente isto:
Acho que você pode obter o que precisa dos DMVs, incluindo
sys.dm_fts_index_keywords_by_document
esys.dm_fts_parser
, algo assim:Cuidado: se você agrupar suas pesquisas entre aspas, obterá uma correspondência exata, portanto, não obterá realmente o benefício da indexação de texto completo. Você também pode fazer isso com
Like
curingas e (%
). Além disso, as funções escalares não tendem a escalar bem em grandes conjuntos de resultados.