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

Откуда: Moscow
Сообщений: 279
Доброе время. MSSQL 2008, iFTS - установлен. Таблица table содержит поля id,название файла, тело файла pdf (int,nvarchar, varbinary(max)), индекс на поле тело файла.
По запросу select * from table where freetext(*,N'цена аренды') - строку таблицы с найденным документам.
Можно ли выбрать следующее после словосочетания 'цена аренды' - само число из тела файла? Типа near(1) ?
Спасибо.
5 фев 14, 17:19    [15524193]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
remotd
Доброе время. MSSQL 2008, iFTS - установлен. Таблица table содержит поля id,название файла, тело файла pdf (int,nvarchar, varbinary(max)), индекс на поле тело файла.
По запросу select * from table where freetext(*,N'цена аренды') - строку таблицы с найденным документам.
Можно ли выбрать следующее после словосочетания 'цена аренды' - само число из тела файла? Типа near(1) ?
Спасибо.


1. что такое iFTS?
2. так как у вас написано ищутся

цена OR аренды

т.е. ищутся отдельные слова в тексте (OR) и мне кажется трудно определить, что искать рядом с разбросанными в тексте словами.

Почитайте о CONTAINS

http://technet.microsoft.com/en-us/library/ms187787.aspx
5 фев 14, 20:43    [15525066]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Winnipuh,
спасибо.
использование freetext или contains не принципиально. Вопрос в том, можно ли считать из varbinary слово, стоящее рядом с искомым. iFTS - integrated Full-Text Search.
6 фев 14, 09:10    [15526332]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
Containstable - возвращает key - ID записи.
По нему выбирайте любое поле, которое сочтете нужным.
7 фев 14, 05:00    [15532138]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Volochkova,
м.б. я неправильно сформулировал - имеется таблица table (предположим с одной строкой) в ней колонка varbinary(max),где
хранится документ в pdf, в этом документе имеется запись ... цена аренды 1200.00 .... Необходимо
считать 1200.00. Строку в таблице table искать не надо. Спасибо.
7 фев 14, 11:58    [15533421]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Glory
Member

Откуда:
Сообщений: 104751
remotd
м.б. я неправильно сформулировал - имеется таблица table (предположим с одной строкой) в ней колонка varbinary(max),где
хранится документ в pdf, в этом документе имеется запись ... цена аренды 1200.00 .... Необходимо
считать 1200.00

с помощью Containstable получаете пк записи.
Из записи берете нужное поле.
В поле ищите подстроку
После подстроки берете "следующее слово"
Все
7 фев 14, 12:30    [15533692]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Jaffar
Member

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

наверное вопрос заключался в том как из поля типа varbinary(max)
взять слово следующее за найденным.
7 фев 14, 12:58    [15533919]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Jaffar, да именно так. Мне проще в сиквеле сделать, чем разбирать в приложении.
7 фев 14, 13:17    [15534114]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Glory
Member

Откуда:
Сообщений: 104751
remotd
да именно так.

И в чем конкретная проблема ?
7 фев 14, 13:19    [15534134]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
remotd
Jaffar, да именно так. Мне проще в сиквеле сделать, чем разбирать в приложении.


как написали выше, найти ид записи, поле, и дальше пальцами в t-sql.

Тем более, что в вашем примере 1200.00 по-моему тружно назвать словом, поскольку '.' разделитель.
7 фев 14, 13:25    [15534196]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
id - записи известно. Есть ли возможность парсить двоичный 0xFFD8FFF09....? Просто предполагал, что FTS ищет слово в двоичном формате, то м.б. существует возможность не только поиска, а и чтения.
7 фев 14, 13:54    [15534439]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Glory
Member

Откуда:
Сообщений: 104751
remotd
Есть ли возможность парсить двоичный 0xFFD8FFF09....?

Так же, как и текстовый.
Пробел, например, имеет десятичный код 32 и шестнадцетричный 20
7 фев 14, 13:56    [15534456]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Glory,
спасибо, а начальную позицию (к примеру "цена аренды") через FTS - не получится вычислить?
7 фев 14, 14:04    [15534515]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Glory
Member

Откуда:
Сообщений: 104751
remotd
а начальную позицию (к примеру "цена аренды") через FTS - не получится вычислить?

А не через FTS вы как находите позицию подстроки в строке ?
7 фев 14, 14:07    [15534557]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Glory,
строковыми функциями (PATINDEX...).
Попробовал конверитровать
SELECT CONVERT(varchar(max), 0x255044462D3..., 0) as [convert to char] - из-за pdf. - не получается.
7 фев 14, 14:14    [15534611]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Glory
Member

Откуда:
Сообщений: 104751
remotd
из-за pdf. - не получается.

Потому, что наверное CONVERT ничего не знает о формате pdf
7 фев 14, 14:15    [15534625]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
remotd
Glory,
спасибо, а начальную позицию (к примеру "цена аренды") через FTS - не получится вычислить?



Перед тем как начать искать позицию вы должны опмнить, что скажем ваша строка может быть такой

"спасибо, а начальную позицию (к примеру цены месячных аренд)"

и это поле может быть найдено по FTS запросу "цена аренды"
7 фев 14, 14:29    [15534740]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Winnipuh, Glory - спасибо
в документах фраза уникальная. Только вот так не понял, как с помощью contains FTS выделить подстроку в pdf-varbinary(max).В Технете посмотрел contains - нет такого.
7 фев 14, 14:48    [15534901]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
remotd
Только вот так не понял, как с помощью contains FTS выделить подстроку в pdf-varbinary(max)
Никак.
Чтобы хоть как-то реализовать желаемое, вам на стороне сервера нужно иметь данные в plain text, а не в pdf.
7 фев 14, 15:13    [15535113]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
remotd
Winnipuh, Glory - спасибо
в документах фраза уникальная. Только вот так не понял, как с помощью contains FTS выделить подстроку в pdf-varbinary(max).В Технете посмотрел contains - нет такого.


Как вариант - написать функцию (SQLCLR), которая будет выбирать содержимое пдф файла как чистый текст и отдавать вам, а вы уже будете там куролесить в поиске следующего слова
7 фев 14, 15:16    [15535136]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать слово в полнотекстовом поле после найденного?  [new]
remotd
Member

Откуда: Moscow
Сообщений: 279
Winnipuh,
всем спасибо. Жаль. Придется парсить на уровне приложения.
7 фев 14, 16:15    [15535626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить