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

Откуда:
Сообщений: 26
Есть табличка Publication, в ней поля Authot, Title, Keywords.
Пытаюсь сделать full-text search сразу по нескольким полям. Пишу что-то вроде этого (пытаюсь найти все записи со словом "gold" хотя бы в одном из полей: или там-или там ):

SELECT Title FROM Publication WHERE CONTAINS(Title,'gold') OR CONTAINS(Keywords,'gold')
Получаю x записей

Смущает тот факт, что когда я делаю два отдельных запроса

SELECT Title FROM Publication WHERE CONTAINS(Title,'gold')
(получаю y записей)
и
SELECT Title FROM Publication WHERE CONTAINS(Keywords,'gold')
(получаю z записей)

а затем складываю число записей этих запросов y+z, то сумма получается > x.

Если я объединяю 2 запроса
SELECT Title FROM Publication WHERE CONTAINS(Title,'gold')
UNION ALL
SELECT Title FROM Publication WHERE CONTAINS(Keywords,'gold')
то полуаю х записей (желаемая цифра)

В чем ошибка в 1-м запросе и будут ли корректно работать такие запросы (которые труднее проверить)
SELECT Title FROM Publication WHERE CONTAINS(Title,'gold') AND CONTAINS(Keywords,'gold')
SELECT Title FROM Publication WHERE CONTAINS(Title,'gold') AND NOT CONTAINS(Keywords,'gold')
30 июн 05, 07:13    [1661384]     Ответить | Цитировать Сообщить модератору
 Re: full-text search по нескольким полям  [new]
Copyright
Member

Откуда: Volgograd=>Moscow=>Volgograd
Сообщений: 1049
germanych
Есть табличка Publication, в ней поля Authot, Title, Keywords.
Пытаюсь сделать full-text search сразу по нескольким полям. Пишу что-то вроде этого (пытаюсь найти все записи со словом "gold" хотя бы в одном из полей: или там-или там ):

SELECT Title FROM Publication WHERE CONTAINS(Title,'gold') OR CONTAINS(Keywords,'gold')
Получаю x записей

Смущает тот факт, что когда я делаю два отдельных запроса

SELECT Title FROM Publication WHERE CONTAINS(Title,'gold')
(получаю y записей)
и
SELECT Title FROM Publication WHERE CONTAINS(Keywords,'gold')
(получаю z записей)

а затем складываю число записей этих запросов y+z, то сумма получается > x.

Если я объединяю 2 запроса
SELECT Title FROM Publication WHERE CONTAINS(Title,'gold')
UNION ALL
SELECT Title FROM Publication WHERE CONTAINS(Keywords,'gold')
то полуаю х записей (желаемая цифра)

В чем ошибка в 1-м запросе и будут ли корректно работать такие запросы (которые труднее проверить)
SELECT Title FROM Publication WHERE CONTAINS(Title,'gold') AND CONTAINS(Keywords,'gold')
SELECT Title FROM Publication WHERE CONTAINS(Title,'gold') AND NOT CONTAINS(Keywords,'gold')


Усе очень просто - у вас есть записи где
Select Title FROM Publication WHERE CONTAINS(Title,'gold') AND CONTAINS(Keywords,'gold')

Число таких записей
y+z - x.

В общем я думаю логика работы Select в данном случае очевидна
30 июн 05, 09:02    [1661470]     Ответить | Цитировать Сообщить модератору
 Re: full-text search по нескольким полям  [new]
Дмитрий16
Member

Откуда: Новосибирск
Сообщений: 481
germanych
а затем складываю число записей этих запросов y+z, то сумма получается > x.
[skip]


Если gold есть и в тексте и в заголовке то колво записей в которых просто есть gold будет больше чем количество записей с gold в заголовке + кол-во записей с gold в тексте.

IMHO очевидно.
30 июн 05, 09:09    [1661484]     Ответить | Цитировать Сообщить модератору
 Re: full-text search по нескольким полям  [new]
Copyright
Member

Откуда: Volgograd=>Moscow=>Volgograd
Сообщений: 1049
Дмитрий16
germanych
а затем складываю число записей этих запросов y+z, то сумма получается > x.
[skip]


Если gold есть и в тексте и в заголовке то колво записей в которых просто есть gold будет больше чем количество записей с gold в заголовке + кол-во записей с gold в тексте.

IMHO очевидно.


Не путай человека
Если есть что выссказать по существу, то выссказывайся...

IMHO Тут надо подходить с точки зрения принципа работы Select, а не конкретного случая... В общем теория множеств поможет (а именно понимание того что есть общее множество, т.е пересечение)
30 июн 05, 09:24    [1661546]     Ответить | Цитировать Сообщить модератору
 Re: full-text search по нескольким полям  [new]
germanych
Member

Откуда:
Сообщений: 26
Спасибо за подсказки. Разобрался. Запрос показывает только уникальные записи (DISTINCT) и эквивалентен просто UNION a не UNION ALL
30 июн 05, 19:50    [1665173]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить