2010-08-04 5 views
1

У меня есть таблица в SQL Server со следующими столбцами:Интеграция регулярных и полнотекстовый индекс в 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

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

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

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

where Contains([text], @text AND "TypeKey_" + @type) 
+0

простой и великой идеи. большое спасибо. – ehsan

1

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