Интегрировать обычный и полнотекстовый индекс в SQL Server - PullRequest
1 голос
/ 04 августа 2010

У меня есть таблица в SQL Server со следующими столбцами:

id int (primary key)
text nvarchar(max) (full text indexed)
type int

и у меня есть такие запросы:

where Contains([text], @text)

или

where Contains([text], @text) AND [type] = 3

Однако второй запрос медленный. Я думаю, что я должен интегрировать полнотекстовый индекс с полем [type].

Есть ли другое решение?

Спасибо

Ответы [ 2 ]

2 голосов
/ 04 августа 2010

Я предполагаю, что вы не используете SQL 2008, так как встроенный полнотекстовый движок в этой версии должен принимать лучшие решения для такого запроса, как ваш.Для более ранних версий я добился успеха, вставив дополнительные ключи в текст с помощью некоторой формы пользовательского тега.Вам понадобятся некоторые триггеры, чтобы поддерживать текст в актуальном состоянии с помощью клавиш.

например, "Это мой пример текста. TypeKey_3"

Тогда ваше предложение whereстановится что-то вроде:

where Contains([text], @text AND "TypeKey_" + @type)
1 голос
/ 04 августа 2010

Учитывая, что вы не можете добавить целочисленное поле к полнотекстовому индексу, лучше всего добавить обычный индекс в [тип].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...