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

Откуда:
Сообщений: 163
Добрый день.

Появилась следующая проблема, помоги, пожалуйста, с решением.

Есть талица с заготовками для полнотекстового поиска (вариантов в районе 2000).
И есть некая текстовая строка varchar(100).

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

В случае с Like все было бы очевидно и понятно, но с полнотекстовым сложнее (иной порядок слов, другая словоформа и т.д.).

Какие решения возможны в данной ситуации?

Спасибо.
24 мар 15, 17:27    [17426167]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Alexey30,

Fulltext запросы не ищут в строке, они ищут в проиндексированной таблице.

Или вам что то другое надо?
24 мар 15, 17:33    [17426192]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
alexeyvg, строка затем будет помещена в таблицу, в которой она может быть найдена.
Вот вопрос в том, как получить те FullText запросы, по которым она затем может быть найдена.

Пока в голову приходит только помещение строки в таблицу, затем некое ожидание обновления каталога и поиск курсором по всем подряд полнотекстовым запросам по таблице, в которую добавлена строка, с попыткой ее найти.

Но может есть какой-то иной более логичный и менее ресурсоемкий вариант?
24 мар 15, 17:40    [17426221]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Alexey30
заготовки для полнотекстового поиска, которые при поиске найдут данную строку


Что такое "заготовки"?

Полнотекстовый поиск работает с помощью функций CONTAINS, FREETEXT ...

DECLARE @SearchWord nvarchar(30)
SET @SearchWord = N'performance'
SELECT Description 
FROM Production.ProductDescription 
WHERE CONTAINS(Description, @SearchWord);


А у вас там что? Вы хотите спросить, можно сделать JOIN с условием CONTAINS(Description, @SearchWord)? Попробуйте, думаю сработает.
24 мар 15, 17:54    [17426290]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
Это все понятно, как пользоваться полнотекстовым поиском я знаю.
Заготовки - имеется в виду некоторые заранее заданные условия.
Например, заготовка "финансисты" может выглядеть так (условие для поиска): бухгалтер OR экономист OR финансист
24 мар 15, 17:59    [17426321]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20609
Ну и что тебя смущает? будет что-то типа
select strings.string, patterns.pattern
from patterns, strings
where contains(strings.string, patterns.pattern)

Проверь...
24 мар 15, 17:59    [17426322]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
Alexey30
Member

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

К сожалению, в Contains, судя по всему, нельзя подставить поле таблицы.
where contains(v.Title, searchPhrase);

приводит к ошибке Неправильный синтаксис около конструкции "searchPhrase".
Если заменить
where contains(v.Title, 'что-то');
, то ошибок нет.
24 мар 15, 18:12    [17426406]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Alexey30
Akina,

К сожалению, в Contains, судя по всему, нельзя подставить поле таблицы.
where contains(v.Title, searchPhrase);

приводит к ошибке Неправильный синтаксис около конструкции "searchPhrase".
Если заменить
where contains(v.Title, 'что-то');
, то ошибок нет.


Так запиши вместо своих заготовок подготовленные выражения поиска.
24 мар 15, 18:23    [17426458]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
Alexey30
Member

Откуда:
Сообщений: 163
a_voronin, не понял, как именно. Можно пример?
24 мар 15, 18:28    [17426472]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Alexey30
a_voronin, не понял, как именно. Можно пример?


Вот это запишите туда и подставляйте потом в запрос

contains(v.Title, N'бухгалтер') OR contains(v.Title, N'экономист') OR contains(v.Title, N'финансист')
24 мар 15, 18:38    [17426492]     Ответить | Цитировать Сообщить модератору
 Re: Соответствие строки множеству Fulltext запросов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Alexey30
alexeyvg, строка затем будет помещена в таблицу, в которой она может быть найдена.
Вот вопрос в том, как получить те FullText запросы, по которым она затем может быть найдена.
А, вот что нужно...
Alexey30
Пока в голову приходит только помещение строки в таблицу, затем некое ожидание обновления каталога и поиск курсором по всем подряд полнотекстовым запросам по таблице, в которую добавлена строка, с попыткой ее найти.
Только так.
24 мар 15, 19:09    [17426582]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить