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

Откуда:
Сообщений: 18
Здравствуйте!
Подскажите, пожалуйста, как можно осуществлять поиск через FREETEXT при этом искать нужно слова из другой таблицы?
Например, есть таблица с текстами table_texts и в ней столбец texts - в нём в строках содержатся тексты, в которых надо найти слова содержащиеся в строках другой таблицы table_words в столбце words.
Спасибо
5 сен 14, 14:38    [16540519]     Ответить | Цитировать Сообщить модератору
 Re: поиск слов FREETEXT из другой таблицы  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Одним запросом не получится.
Делайте временную таблицу для складывания результатов, курсор по table_words,
поиск,
результаты складывайте во временную таблицу.
5 сен 14, 16:34    [16541365]     Ответить | Цитировать Сообщить модератору
 Re: поиск слов FREETEXT из другой таблицы  [new]
джим мерс
Guest
Есть пример (http://msdn.microsoft.com/en-us/library/ms176078.aspx):

USE AdventureWorks2012;
GO
DECLARE @SearchWord varchar(30)
SET @SearchWord = 'performance'
SELECT Description 
FROM Production.ProductDescription 
WHERE FREETEXT(Description, @SearchWord);


Разница с этим примером в том, что @SearchWord следует заполнить списком слов из table_words. Это можно сделать через один запрос.
5 сен 14, 20:51    [16542736]     Ответить | Цитировать Сообщить модератору
 Re: поиск слов FREETEXT из другой таблицы  [new]
aryumin
Member

Откуда:
Сообщений: 18
джим мерс
Есть пример (http://msdn.microsoft.com/en-us/library/ms176078.aspx):

USE AdventureWorks2012;
GO
DECLARE @SearchWord varchar(30)
SET @SearchWord = 'performance'
SELECT Description 
FROM Production.ProductDescription 
WHERE FREETEXT(Description, @SearchWord);


Разница с этим примером в том, что @SearchWord следует заполнить списком слов из table_words. Это можно сделать через один запрос.


Спасибо, этот вариант я знаю, но мне он не подходит, к сожалению :-)
Дело в том, что мне как раз надо обращаться к другой таблице за этими словами. То есть в результате мне хочется просто импортировать таблицу в БД с несколькими столбцами - в каждом столбце группы слов, объединенных одной категорией. Далее применять эту таблицу слов к таблице текстов, так скажем, и на выходе получать 2 варианта таблиц - 1. частоту встречаемости слов их каждой категории (столбца) слов таблицы со словами в текстах из таблицы с текстами 2. получить матрицу представленности каждой из категорий слов в каждом из текстов - строки тексты, столбцы - категории слов. Есть слово из категории - стоит 1, нет слова из категории слов - стоит NULL. Но в SQL я еще совсем не силен, поэтому задача для меня оказалась очень трудной :-) Первый ответ я увы не понял... По подробнее бы его получить...
6 сен 14, 09:49    [16543689]     Ответить | Цитировать Сообщить модератору
 Re: поиск слов FREETEXT из другой таблицы  [new]
aryumin
Member

Откуда:
Сообщений: 18
То есть я хотел разобраться с тем, как это можно сделать с одним столбцом таблицы слов, ну а потом и с несколькими :-)
6 сен 14, 10:07    [16543703]     Ответить | Цитировать Сообщить модератору
 Re: поиск слов FREETEXT из другой таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9723
1. Делаем функцию
create function dbo.fnSearchTexts
(
 @words nvarchar(4000)
)
returns @r table (texts nvarchar(max))
as
begin
 insert into @r
  select
   texts
  from
   table_texts
  where
   freetext(texts, @words)

 return;
end;
go


2. Сам запрос
select
 t.texts
from
 table_words w cross apply
 dbo.fnSearchTexts(w.words) t
6 сен 14, 10:44    [16543735]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить