Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
Здравствуте, погуглил и по инету и по форуму...

Есть секционированное представление - в нем форумы. Структура одинакова, message в поле nvarchar(max)
Форумов что-то около 30. check constraint на поле, которое в каждой форумной таблице и содержит название этой таблицы. Это констрэйнт использую для секционирования. Все работает замечательно.

Но вот встала задача поиска вхождения фразы в сообщение любого из форумов. Хотел бы поиграть с FULL-TEXT serch. Но не получается создать уникальный индекс на вьюхе, поскольку она секционирована.

Кто-нибудь решал такую задачу?
Я нашим разработчикам посоветовал в качестве одного из параметров поиска передавать еще и название форума... Но это вряд ли найдет поддержку, по крайней мере сейчас. Потому бонусы секционирования в данном случае не работают.

что делать? Создать полнотекстовый индекс на каждом из форумов? Поможет ли это?
25 июл 13, 15:11    [14616718]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
invm
Member

Откуда: Москва
Сообщений: 9632
FTI можно создать для таблицы или индексированного представления.
Так что выбор у вас не богат: либо менять архитектуру БД, либо FTI на каждую таблицу + инлайновая функция с кучей union all внутри.
25 июл 13, 15:24    [14616816]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Shurgenz,

Что, настолько много сообщений, что понадобилось по таблице на форум?!
25 июл 13, 15:26    [14616840]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Можно ещё для каждой таблицы своё индексирование сделать
25 июл 13, 15:28    [14616856]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
invm
FTI можно создать для таблицы или индексированного представления.
Так что выбор у вас не богат: либо менять архитектуру БД, либо FTI на каждую таблицу + инлайновая функция с кучей union all внутри.


по поводу инлайновой функции малость не понял... зачем?
25 июл 13, 15:32    [14616895]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
pkarklin
Shurgenz,

Что, настолько много сообщений, что понадобилось по таблице на форум?!


это исторически... в каких-то много, в каких-то мало.... менять сейчас что-то не дадут
25 июл 13, 15:33    [14616898]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
iap
Можно ещё для каждой таблицы своё индексирование сделать
http://www.gotdotnet.ru/blogs/decolores/1914/
25 июл 13, 15:38    [14616932]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
Shurgenz
Member

Откуда: Питер
Сообщений: 1938
iap
iap
Можно ещё для каждой таблицы своё индексирование сделать
http://www.gotdotnet.ru/blogs/decolores/1914/


Прекрасный вариант... попробую реализовать, спасибо!
25 июл 13, 16:12    [14617218]     Ответить | Цитировать Сообщить модератору
 Re: Как спроектировать полнотекстовый поиск в секционированном предсатвлении?  [new]
invm
Member

Откуда: Москва
Сообщений: 9632
Shurgenz
по поводу инлайновой функции малость не понял... зачем?
create function dbo.fnSearchOnAllForums
(
 @Critereia varchar(100)
)
returns table
as
return
 select 'Forum1', id from dbo.Forum1 where contains(Message, @Criteria)
 union all
 select 'Forum2', id from dbo.Forum2 where contains(Message, @Criteria)
 union all
 ...
 union all
 select 'ForumN', id from dbo.ForumN where contains(Message, @Criteria);
25 июл 13, 16:35    [14617407]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить