Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Доброе всем время суток.

Сервер 2008.

Есть задача - по добавляемым в базу машинночитаемым файлам сделать индексирование, поиск и т.п.
Соответственно надо прочитывать все файлы и их текст кидать в отдельное поле nvarchar(max), которое индексировать (могу ошибаться).

Посоветуйсте пожалуйста, каким макаром удобнее и стабильнее будет организовать чтение файлов как оффиса (doc, xls, ppt + docx, xlsx etc) так и pdf?

Если кто либо сталкивался, есть ли в c# для ms sql нужные библиотеки? Или лучше OLE?

В общем с радостью приму любые советы на эту тему.
5 окт 11, 21:38    [11391494]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Общие сведения о полнотекстовом индексировании
5 окт 11, 21:46    [11391514]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
pkarklin, спасибо!
5 окт 11, 22:57    [11391764]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Поставить недостающе фильтры (офисный и от адоба для пдф), указать типы документов
6 окт 11, 11:44    [11393459]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
автор
В общем с радостью приму любые советы на эту тему.

Не знаю, можно ли прикрутить к MS SQL поисковик Яндекса (Яндекс-сервер)?
http://company.yandex.ru/technology/server
http://api.yandex.ru/server/doc/concepts/About.xml

или Персональный поиск Яндекса
http://desktop.yandex.ru/help/
6 окт 11, 11:54    [11393560]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
trew
автор
В общем с радостью приму любые советы на эту тему.

Не знаю, можно ли прикрутить к MS SQL поисковик Яндекса (Яндекс-сервер)?
http://company.yandex.ru/technology/server
http://api.yandex.ru/server/doc/concepts/About.xml

или Персональный поиск Яндекса
http://desktop.yandex.ru/help/


а смысл городить такое?
6 окт 11, 11:59    [11393605]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Появилась новая задача в рамках индексации файлов, которую я пока не знаю как решить.

Я настроил полнотекстовый поиск, прикрутил Office2010 и даже pdf (правда на серверной оси он работает только платно и я не знаю пока как решить эту проблемку). Поиск в sql запросах выдаёт ожидаемый результат, всё ок.

Теперь всё утыкается в выдачу результатов запроса на клиента. Хочется как в винде (Win7) - вписываешь в проводнике слово, она вываливает тебе все доки и выдаёт по каждому кусочек с вхождением (видимо первым). Теперь я не могу понять - можно ли у системы индексации каким то образом получить текст документа?

Как вариант, я выяснил что индексатор использует некий интерфейс IFilter, который гуглится на раз и даже в вики есть статья. Можно в c# подцепить те же библиотеки и через этот интерфейс получать текст документов. Но только вот это никоим образом не поможет мне подсветить то, что нашёл индексатор. Может быть есть какие либо виндовые библиотеки, которые решают эту проблему?

В общем есть ли решение задачи в рамках сервера, как крайний случай с написанием своей clr процедуры?

Прошу гуру помочь в решении задачи.

P.S. Поиск от яндекса слишком рисковано прикручивать, мне надо 100% работающее решение. Т.к. индексация делается быстро (и даже элементарно), то хотелось бы продолжения в рамках именно этого решения.
6 окт 11, 16:30    [11396212]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Dmitry V. Nechaev
Появилась новая задача в рамках индексации файлов, которую я пока не знаю как решить.

Я настроил полнотекстовый поиск, прикрутил Office2010 и даже pdf (правда на серверной оси он работает только платно и я не знаю пока как решить эту проблемку). Поиск в sql запросах выдаёт ожидаемый результат, всё ок.

Теперь всё утыкается в выдачу результатов запроса на клиента. Хочется как в винде (Win7) - вписываешь в проводнике слово, она вываливает тебе все доки и выдаёт по каждому кусочек с вхождением (видимо первым). Теперь я не могу понять - можно ли у системы индексации каким то образом получить текст документа?

Как вариант, я выяснил что индексатор использует некий интерфейс IFilter, который гуглится на раз и даже в вики есть статья. Можно в c# подцепить те же библиотеки и через этот интерфейс получать текст документов. Но только вот это никоим образом не поможет мне подсветить то, что нашёл индексатор. Может быть есть какие либо виндовые библиотеки, которые решают эту проблему?

В общем есть ли решение задачи в рамках сервера, как крайний случай с написанием своей clr процедуры?

Прошу гуру помочь в решении задачи.

P.S. Поиск от яндекса слишком рисковано прикручивать, мне надо 100% работающее решение. Т.к. индексация делается быстро (и даже элементарно), то хотелось бы продолжения в рамках именно этого решения.



сумбурно как-то...

фильтр от адобе для пдф - был бесплатный.
И офис не надо ставить на "серверную ось", а только фильтры для офисных файлов, тоже бесплатные.

Далее - вопрлс гед вы храниет файлы, если в файловой системе - может быть одно решение, через линкед сервер.
Если в базе, то там надо бы указать какой тип документа хранится, чтобы индексатор знал ккой фильтр применять.

У меня вариант 1 испольузется и результаты полнотекстового поиска по дсикам скрещиваются с результатами поиска в базе.
Все работает.
Кроме того, в свежих версиях сервера вы можете использоваnь Filestreams
6 окт 11, 17:09    [11396603]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Winnipuh

сумбурно как-то...

фильтр от адобе для пдф - был бесплатный.
И офис не надо ставить на "серверную ось", а только фильтры для офисных файлов, тоже бесплатные.

Далее - вопрлс гед вы храниет файлы, если в файловой системе - может быть одно решение, через линкед сервер.
Если в базе, то там надо бы указать какой тип документа хранится, чтобы индексатор знал ккой фильтр применять.

У меня вариант 1 испольузется и результаты полнотекстового поиска по дсикам скрещиваются с результатами поиска в базе.
Все работает.
Кроме того, в свежих версиях сервера вы можете использоваnь Filestreams


Я буду ставить фильтры на ту же машину, где и sql сервер. Это будет 100% серверная ось ;)

Про хранение блобов на диске я в курсе, но не понимаю пока как это использовать. Разницы между поиском по индексу нет никакой, механизм то одинаковый, что у виндового search engine, что у сиквельного. Фильтры вона одни и те же. Только вот это не поможет в выдаче результатов имхо никак.

В общем вопрос остаётся тот же - через какой механизм можно выдать не просто файлы подходящие под запрос, но и кусок текста из файлов, где найдено совпадение.
6 окт 11, 20:34    [11397884]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Нашёл обсуждение подобной задачи

https://www.sql.ru/forum/actualthread.aspx?tid=216226
7 окт 11, 00:41    [11398952]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Dmitry V. Nechaev
Нашёл обсуждение подобной задачи

https://www.sql.ru/forum/actualthread.aspx?tid=216226


с выдачей куска текста помогло?
7 окт 11, 12:47    [11401370]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Winnipuh

с выдачей куска текста помогло?


Неа. Нашёл только ссылки на некую статью, где был код, который мог это делать. Самой статьи нет, ссылка уже битая.
Поиск яндекса это не то. У них чётко веб сервер, который никуда не воткнёшь. Максимум можно прикрутить выдачу xml, но сервер всё равно надо будет запрашивать по отдельному адресу. Да и стоит он как моя работа ;)

буду звонить в RCO, у них вроде по божески
7 окт 11, 14:06    [11402090]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Возьму их бэкоффис, говорят всё работает на c# и можно сделать без проблем подсветку на клиенте сделав все обработки только на ms sql
7 окт 11, 15:38    [11402992]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Dmitry V. Nechaev
Возьму их бэкоффис, говорят всё работает на c# и можно сделать без проблем подсветку на клиенте сделав все обработки только на ms sql


ну да.. наверное .. Хотя можно и самому сделать на шарпе, если сервер с версией выше экспресса
7 окт 11, 17:44    [11404322]     Ответить | Цитировать Сообщить модератору
 Re: Индексация .doc, .pdf, .xls, .ppt файлов  [new]
Dmitry V. Nechaev
Member

Откуда:
Сообщений: 356
Для потомкофф.

Задачу решил через RCO. У них на самом деле есть то, что надо.

В общем продукт их оказался из трёх частей:

1. это поисковый механизм, который вроде-бы улучшает работу с русским языком. Тут я им верю на слово.
2. это три ActiveX класса. Первый считывает данные из машинно-читаемых файлов (надстройка над механизмом, который юзает сам сервер). Второй формирует строку для запроса из обычной строки и делает словоформы от всех слов строки. Третий по указанным словоформам выцепляет в тексте куски с включениями и формирует аннотацию (добавляет теги по желанию).
Собственно работа получается простая: получаем текст файла, формируем словоформы от запроса, получаем аннотацию.
Я всё сделал через OLE, прямо в хранимке, но помучался с длинными строками (решено с помощью форума через insert exec)
3. это c# приблуда для подсветки вхождения в тексте. Мне не понадобилась
из описания увидел что-то типа аннотации, но во всю длину документа. Умеет работать с html, то есть можно юзать при отображении документов, для которых есть преобразователи в html, чем кажется и отличается от аннотации (у той только плоский текст)

Документации у них практически нет, для сиквела экзамплов тоже нет (уже есть ;) но поддержка адекватная и все мои вопросы были вполне оперативно решены.
Сложилось ощущение что это у них внутренний продукт, который они где то в своих системах юзают и решили всем желающим продавать отдельно as is.

плюсы:
- цена, которую я могу заплатить из своего кармана
- обеспечивает всё что обещано
- работает без CLR обёрток, прямо в хранимках, через OLE
- нормальная поддержка

минусы
- документация сделана по типу метаданных OLE объета, для SQL нет примеров использования (теперь уже есть)

оценка - четвёрка ;)
31 окт 11, 20:30    [11529324]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить