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

Откуда:
Сообщений: 7
declare @test nvarchar(4000)
set @test = 'All or kids or want or to or explore or this or new or world. or When or they or play or and or are or challenged or they or learn or and or grow or by or leaps or and or bounds. or All or kids or want or to or explore or this or new or world. or When or they or play or and or are or challenged or they or learn or and or grow or by or leaps or and or bounds. or All or kids or want or to or explore or this or new or world. or When or they or play or and or are or challenged or they or learn or and or grow or by or leaps or and or bounds. '

--set @test = replace(@test, ' ', ' or ');

SELECT E.description, key_tbl.rank
FROM dbo.[Blog_Entries] E
left
JOIN CONTAINSTABLE(dbo.[Blog_Entries], [description], @test) AS KEY_TBL
ON E.EntryID = KEY_TBL.[key]
where KEY_TBL.rank is not null

order by coalesce(KEY_TBL.rank, 0) desc

в данном варианте кода возникают ошибки при замене пробелов, запятых и т.д. можно конечно написать 100 раз replace, что бы угадать все варианты, но это как то не правильно и не надежно. Может кто нить знает как можно сделать???
22 окт 09, 10:30    [7821949]     Ответить | Цитировать Сообщить модератору
 Re: Помгите с FTS  [new]
Glory
Member

Откуда:
Сообщений: 104760
IgorZorich


в данном варианте кода возникают ошибки при замене пробелов, запятых и т.д.

И нужно угадать что ли эти ошибки ?
22 окт 09, 10:33    [7821973]     Ответить | Цитировать Сообщить модератору
 Re: Помгите с FTS  [new]
IgorZorich
Member

Откуда:
Сообщений: 7
ФТС используется для поиска по полю Description, в котором содержатся довольно длинные строки. С фронтэнда передается строка, составленная пользователем.. так сказать условие поиска. Эта строка может быть как одним словом, так и рандомным набором символов - сами понимаете, что может пользователь набрать в сёрче.
Так вот эту строку нужно представить для ФТСа в правильном формате.. то есть что бы он ее воспринимал не как одно странное слово, а как набор слов для поиска.
Первой мыслью было заменять пробелы между словами в этой переменной с фронтэнда на " OR ", дабу удовлетворить синтаксису, но вот здесь и стали появляться ошибки. Если в поисковой строке имеется запятая, то поиск выдаст ошибку:
Syntax error near ',' in the full-text search condition 
Если каким то образом было указано больше одного пробела между словами - то они будут заменены на 2 последовательных " OR ", что тоже даст подобную ошибку. И так далее.. Предугадать все варианты или составить универсальный умный алгоритм - вот наша задача.
Очень хотелось бы услышать ваши мысли по этому поводу: как можно использовать такой сложно составленный параметр для ФТСа.

Заранее спасибо.
22 окт 09, 11:19    [7822402]     Ответить | Цитировать Сообщить модератору
 Re: Помгите с FTS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31204
IgorZorich
Предугадать все варианты или составить универсальный умный алгоритм - вот наша задача.
Очень хотелось бы услышать ваши мысли по этому поводу: как можно использовать такой сложно составленный параметр для ФТСа.

Заранее спасибо.
Варианта всего два - или самим правильно составлять строку для CONTAINSTABLE, или использовать FREETEXTTABLE.
22 окт 09, 12:15    [7822921]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить