Вот что я в итоге сделал:
Пример, который я привел выше, мог быть немного упрощен. В реальном приложении полнотекстовый индекс фактически находится в представлении, представляющем объединение двух таблиц. Одним из преимуществ этого является то, что схема представления может быть независимой от таблиц, из которых оно построено.
Чтобы использовать мой (упрощенный) пример, приведенный выше, у меня есть таблица, которая выглядит следующим образом:
Люди
- FirstName nvarchar (50)
- Фамилия nvarchar (50)
Представление, из которого фактически построен индекс, выглядело так:
PeopleView
- FirstName nvarchar (50)
- Фамилия nvarchar (50)
Чтобы обойти проблему, я изменил схему представления так, чтобы теперь был один столбец (плюс ключ), который содержит содержимое всей таблицы (таблиц), представленных представлением:
PeopleView
Полнотекстовый каталог, конечно, пришлось перестраивать с учетом новой схемы представления, но все изменения были сделаны на уровне базы данных, что не означало никаких изменений в коде приложения. Мне пришлось внести несколько корректировок в представление для обработки столбцов, которые могут иметь нулевые значения, поскольку NULL объединяется с любым значением = NULL.