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

Откуда: Киев
Сообщений: 225
Добрый день.
Помогите пож-та с поиском в FullText.
Есть таблица Х (Id, FIO, NAME, SURNAME).
CREATE TABLE X
	(
		  Id			INT IDENTITY(1,1) CONSTRAINT Id_PK PRIMARY KEY
		, FIO			varchar(100) NULL
		, Name			varchar(100) NULL
		, SURNAME		varchar(100) NULL
	)
	
insert into X (FIO,Name,SURNAME)
values ('Иванов','Иван','Иванович')	

Создал полнотекстовый индекс, включил все поля(FIO, NAME, SURNAME).
Провожу поиск:
		SELECT 
			person.*
		FROM
			dbo.X person (NOLOCK)
			WHERE CONTAINS (person.*, 'Иванов AND Иван AND Иванович')

Результат поиска - 0 строк.
Если в поиске оставить только, к примеру, SURNAME, то запись находится.

В чем собственно вопрос: можно ли вообще производить обобщенный поиск по всем полям, включенным в полнотекстовый индекс? Если да, то как?
Или поиск и должен производиться для каждой колонки отдельно, как я наблюдаю сейчас?
15 май 13, 12:55    [14298539]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
Glory
Member

Откуда:
Сообщений: 104751
kirser
Или поиск и должен производиться для каждой колонки отдельно, как я наблюдаю сейчас?

Вы думаете, что сервер сам должен соединить значения в разных полях и искать заданный текст в полученном результате ?

CONTAINS (person.fio, 'Иванов')
AND CONTAINS (person.name, 'Иван')
AND CONTAINS (person.surname, 'Иванович')
15 май 13, 12:58    [14298579]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
Гость333
Member

Откуда:
Сообщений: 3683
kirser,

Надо примерно так:
SELECT person.*
FROM dbo.X person (NOLOCK)
WHERE CONTAINS (person.*, 'Иванов') AND CONTAINS (person.*, 'Иван') AND CONTAINS (person.*, 'Иванович')
15 май 13, 13:00    [14298601]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Всем спасибо за ответы.
В книге вычитал тот же самый вариант решения.
Как минимум, есть еще вариант создания отдельного поля для поиска, которое будет содержать в себе все значения полей.
15 май 13, 13:06    [14298650]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
Exproment
Member

Откуда:
Сообщений: 416
kirser, что за книга такая, если не секрет ?
15 май 13, 13:10    [14298683]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Exproment,

SQL Server 2005 Библия пользователя
Пол Нильсен
ISBN 978-5-8459-1314-2
15 май 13, 13:33    [14298902]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
Exproment
Member

Откуда:
Сообщений: 416
kirser, спс... уже читал (
15 май 13, 22:03    [14302172]     Ответить | Цитировать Сообщить модератору
 Re: FullText поиск в нескольких полях  [new]
kirser
Member

Откуда: Киев
Сообщений: 225
Созрела идея.
А что если к существующей таблице Х добавить calculated collumn и на него натравить FullText index?
В калькулируемое поле запихнуть
[FIO]+'  '+[NAME]+'  '+[SURNAME]


Должно работать.
Но... с какими возможными проблемами я столкнусь?
Может ли такая архитектура снизить скорость поиска данных?
16 май 13, 18:51    [14307705]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить