Я начинаю набег на полнотекстовый поиск по MSSQL2005. Это новая in-dev база данных, поэтому я могу с ней разбираться.
Допустим, у меня есть таблица «Форма», которая имеет отношение «один ко многим» с двумя другими таблицами: «Ответ» и «Комментарий». Я хочу, чтобы пользователь мог ввести один поисковый запрос и сделать так, чтобы он привязывал все три таблицы с помощью полнотекстового поиска. Какой лучший способ? Кажется, что я могу создать индексированное представление , чтобы ускорить процесс.
Если я использую индексированное представление (это лучший маршрут в любом случае?), Как мне справиться с отношениями один-ко-многим? Давайте предположим, что все, что я действительно хочу выяснить, - это идентификатор таблицы «Форма», которая будет содержать любые результаты поиска, найденные в дочерних таблицах «Ответ / комментарий», поэтому я могу показать всю форму, содержащую найденные записи. Внутреннее соединение в представлении приведет к возвращению нескольких «главных» строк формы - это не очень хорошо для производительности. Как насчет объединения всех дочерних строк ответа / комментария в один «столбец» для представления? Так что вместо ....
Form 1, Answer A, Comment A
Form 1, Answer B, Comment A
Form 1, Answer A, Comment B
Form 1, Answer B, Comment B
... это было бы ...
Form 1, Answer A Answer B, Comment A Comment B
Помните, что все, что меня волнует, это идентификатор этой главной строки "формы".
Это кажется мне логичным, но я не уверен, что лучшие практики по полнотекстовому поиску еще есть, поэтому просто любопытно, правильно ли я к нему подхожу.
ОБНОВЛЕНИЕ: Похоже, что индексированные представления довольно строгие; нет левых соединений, нет подзапросов, поэтому я мог бы пойти по пути сводной таблицы, заполненной триггерами, если она не будет слишком громоздкой.