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

Откуда: Украина, г.Киев
Сообщений: 96
Суть вопроса. Есть таблица с полнотекстовым индексом. Индексированы ее 2 столбца. Нужно их объединить в один с помощью оператора CONCAT, и в этом, новом столбце уже вести полнотекстовый поиск. Как это сделать не создавая физически в таблице нового столбца и не внося его в full text index? Одно из решений состоит в использовании временной таблицы, с динамически созданным в ней полнотекстовым индексом. Но тогда возникает вопрос - поддерживает ли оператор CONTAINSTABLE временные таблицы в качестве параметра. Вот такие проблемы. Уважаемые гуру, кто сталкивался с подобными задачами, окажите посильную помощь - буду благодарен ;)
22 сен 14, 19:21    [16606686]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Абросов Юрий
Суть вопроса. Есть таблица с полнотекстовым индексом. Индексированы ее 2 столбца. Нужно их объединить в один с помощью оператора CONCAT, и в этом, новом столбце уже вести полнотекстовый поиск. Как это сделать не создавая физически в таблице нового столбца и не внося его в full text index? Одно из решений состоит в использовании временной таблицы, с динамически созданным в ней полнотекстовым индексом. Но тогда возникает вопрос - поддерживает ли оператор CONTAINSTABLE временные таблицы в качестве параметра. Вот такие проблемы. Уважаемые гуру, кто сталкивался с подобными задачами, окажите посильную помощь - буду благодарен ;)


можно было бы (наверное) сделать вью и его проиндексировать.
Но вы не хотите создавать новый индекс....

Тогда ищите в обоих полях типа чего-то такого

contains OR contains и т.д.
22 сен 14, 19:31    [16606712]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
Ну почему же не хочу. Можно и вьюшку создать и ее проиндексировать - только зачем держать в базе еще один объект. Поэтому я остановился на временной таблице. А поиск "contains OR contains" по двум колонкам, входящим в индекс работает и дает правильній результат. А вот поиск "contains AND contains" по двум колонкам не работает, а работает только по одной. Моя задача как раз и заключается в создании новой колонки, составной из этих двух и поиск по ней.
22 сен 14, 19:44    [16606747]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Сделайте вычисляемый столбец и его проиндексируйте.
22 сен 14, 20:46    [16606944]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
Абросов Юрий
А вот поиск "contains AND contains" по двум колонкам не работает, а работает только по одной.

Вы хотите сказать, что при замене OR на AND перестает работать полнотекстовый поиск ?
23 сен 14, 11:09    [16608759]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Абросов Юрий
Ну почему же не хочу. Можно и вьюшку создать и ее проиндексировать - только зачем держать в базе еще один объект. Поэтому я остановился на временной таблице. А поиск "contains OR contains" по двум колонкам, входящим в индекс работает и дает правильній результат. А вот поиск "contains AND contains" по двум колонкам не работает, а работает только по одной. Моя задача как раз и заключается в создании новой колонки, составной из этих двух и поиск по ней.


ну так Буль
----------------
a or b
f(1,a) or f(1,a) or f(2,a) or f(2,b)

a & b

f(1,a) & f(1,b)
or
f(1,a) & f(2,b)
or
f(2,a) & f(1,b)
or
f(2,a) & f(2,b)

и т.д..

Но это высшая форма извращений, для сложных выражений вы сами перестанете понимать, зачем это всё...
Какой объем у FTC?
Делайте второй каталог и не парьтесь
23 сен 14, 11:39    [16608957]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
Приветствую, Glory - давно с Вами не общался ;)
Отвечая на Ваш вопрос, хочу скапзать, что при замене OR на AND полнотекстовый поиск работает только по одной колонке, а по двум не работает. В этом и состоит причина вышеописанного танца с бубнами, т.е. конкатенации колонок.
23 сен 14, 15:35    [16611011]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
invm
Сделайте вычисляемый столбец и его проиндексируйте.


А вот это интересное предложение - попробую его использовать. Спасибо.
23 сен 14, 15:38    [16611025]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
Абросов Юрий
хочу скапзать, что при замене OR на AND полнотекстовый поиск работает только по одной колонке, а по двум не работает.

Не путайте "не работает" и "работает не так, как я думаю"
23 сен 14, 16:29    [16611357]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
Glory
Абросов Юрий
хочу скапзать, что при замене OR на AND полнотекстовый поиск работает только по одной колонке, а по двум не работает.

Не путайте "не работает" и "работает не так, как я думаю"


Суть в том, что я не получаю ожидаемого результата - вообще никакого результата не получаю при замене OR на AND.
23 сен 14, 16:55    [16611545]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
Абросов Юрий
Суть в том, что я не получаю ожидаемого результата - вообще никакого результата не получаю при замене OR на AND.

Ну так это не значит, что " полнотекстовый поиск а по двум не работает"
23 сен 14, 17:00    [16611583]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
Абросов Юрий
invm
Сделайте вычисляемый столбец и его проиндексируйте.


А вот это интересное предложение - попробую его использовать. Спасибо.


Кстати, насколько я знаю, вычисляемый столбец должен быть PERSISTS для возможности индексации.
23 сен 14, 17:02    [16611607]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Абросов Юрий
Кстати, насколько я знаю, вычисляемый столбец должен быть PERSISTS для возможности индексации.
Не обязательно.
23 сен 14, 17:47    [16611908]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
Вот такая квери у меня получилась:

ALTER TABLE Person
ADD FullName AS CONCAT (FirstName], ' ', LastName])
GO
CREATE UNIQUE INDEX uiPerson ON Person(ID)
CREATE FULLTEXT INDEX ON Person (FullName)
KEY INDEX uiPerson
GO
SELECT * FROM Person
AS FT_TBL INNER JOIN CONTAINSTABLE (Person,
(
FullName
)
, '"A*" AND "B*"', 11) AS KEY_TBL ON FT_TBL.ID = KEY_TBL.[KEY] ORDER BY KEY_TBL.RANK DESC
GO
DROP FULLTEXT INDEX ON Person
DROP INDEX uiPerson ON Person
GO
ALTER TABLE Person
DROP COLUMN FullName
GO

Здесь, Person - таблица с тремя колонками: ID - int, PK; FirstName - char; LastName - char
Если запускаю эту квери в отладчике, возвращается ожидаемый результат. Если нет - пустой результат. Что не так? Как исправить?
23 сен 14, 18:09    [16612024]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Если запускаю эту квери в отладчике, возвращается ожидаемый результат. Если нет - пустой результат. Что не так? Как исправить?

это какая-то постная фигня (ц)
23 сен 14, 18:19    [16612080]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Абросов Юрий
Что не так? Как исправить?
Заполнение FTI - операция асинхронная.
Поэтому, когда выполняется ваш select индекс еще пуст.
23 сен 14, 18:23    [16612108]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
invm
Абросов Юрий
Что не так? Как исправить?
Заполнение FTI - операция асинхронная.
Поэтому, когда выполняется ваш select индекс еще пуст.


Ну, я так и предполагал. Как исправить, чтобы все было в одном запросе?
23 сен 14, 19:23    [16612380]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Абросов Юрий
Как исправить, чтобы все было в одном запросе?
Зачем в одном?
23 сен 14, 19:57    [16612482]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с full text search в SQL2012  [new]
Абросов Юрий
Member

Откуда: Украина, г.Киев
Сообщений: 96
invm
Абросов Юрий
Как исправить, чтобы все было в одном запросе?
Зачем в одном?


Понял - разнесу, спасибо.
24 сен 14, 12:31    [16615101]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить