Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Full Text Search вопрос к знатокам / 6 сообщений из 6, страница 1 из 1
24.08.2002, 00:44:16
    #32045676
SM
SM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Full Text Search вопрос к знатокам
Итак, делаем сисистему помощи для web приложения - есть таблица WIHelpTopic а в ней поля

Title varchar(30)
Text text

Full text search утановлен и настроен на эти оба поля.
Теперь желаем найти все топики по поводу Agent и
Commission

Код: plaintext
1.
2.
SELECT * 
FROM WIHelpTopic 
WHERE CONTAINS(*,'agent and commission')


Так вот проблема в том, что если "agent" в [Title] а "commission" в [Text] - этот запрос ничего не возвращает.
А вернет он результат только для строк, у которых либо в
[Title] либо в [Text] есть оба этих слова - а это совсем не то, что нужно.

Можно конечно написать что-то типа
Код: plaintext
1.
2.
3.
4.
SELECT * 
FROM WIHelpTopic 
WHERE 
(CONTAINS(Title,'Commission or agent') and CONTAINS(text,'agent or Commission')) 
Or (CONTAINS(*,'Commission and agent'))


Но как вы понимаете, слов в строке может быть сколь угодно много в различных вариациях OR AND NOT. К тому же это решение подойтед только для вырианта двух полей.

Какой может быть выход из этой ситуации?
Как я понимаю, нужно искать как бы в одном поле.
Я попробовал сделать вычисляемое поле - комбинацию двух Title и Text - c мыслью навесить потом на это поле fulltext search index, однако во-первых не удается написать формулу - text не хочет складываться с varchar (приходится все конвертить жо varhcar(8000) - топик может быть и больше), а во-вторых fulltexsearch index не навешивается на вычисляемое поле (что в принципе понятно).


Знатоки могут что-лиюо посоветовать?
...
Рейтинг: 0 / 0
24.08.2002, 02:13:42
    #32045678
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Full Text Search вопрос к знатокам
А что если запрос построить так:
Код: plaintext
1.
2.
SELECT * 
FROM WIHelpTopic 
WHERE CONTAINS(*,'agent') AND CONTAINS(*,'commission')

-- Слон
...
Рейтинг: 0 / 0
24.08.2002, 02:35:57
    #32045680
SM
SM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Full Text Search вопрос к знатокам
И еще вопрос

Код: plaintext
1.
Server: Msg  7619 , Level  16 , State  1 , Line  2 
Execution of a full-text operation failed. A clause of the query contained only ignored words. 


Как подавить сообщение об ошибке ? Мне нужно просто вернуть пустой рекордсет если ничего не найдено не генерируя исключение для клиента
...
Рейтинг: 0 / 0
24.08.2002, 16:45:16
    #32045716
Lexis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Full Text Search вопрос к знатокам
а если завернуть все в хранимую процедуру и там ловить твою ошибку?

if @@error<>0
begin
...
...
end
...
Рейтинг: 0 / 0
26.08.2002, 03:58:08
    #32045767
Sergey Makarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Full Text Search вопрос к знатокам
Это уже в процедуре.
в качестве параметра приходит строка поиска
Agent OR Reps AND Comission ... и т.д.
Ошибка не ловится, процедура останавливается на этом запросе и возникает исключение
...
Рейтинг: 0 / 0
26.08.2002, 17:11:58
    #32045935
Sergey Makarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Full Text Search вопрос к знатокам
Неужели никто не работал с Full Text Search?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Full Text Search вопрос к знатокам / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]