[IFilter] Поиск в содержании файлов из 1С (ВК, .NET)


Компонента для работы с фильтрами поисковых систем.
  Получает текст из файла по установленном в системе фильтрам.
  Индексирует и ищет файлы по их содержанию (аналог Desktop Search)
  Поддерживает *.doc, *.xls, *.txt, *.ppt.
  Дополнительные фильтры можно скачать с http://www.ifilter.org/Links.htm

*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать отсюда.

Чтобы зарегистрировать компоненту в Windows — запустить reg.bat

*** Подключение:

Перем ВК;

ПОДКЛЮЧЕНИЕ КОМПОНЕНТЫ В 1С 7.7:

  ИмяВК="AddIn.IFilter";

Попытка
ПодключитьВнешнююКомпоненту(ИмяВК);
Исключение
Сообщить("Не удалось подключить компоненту "+ИмяВК);
КонецПопытки;

Попытка
ВК = СоздатьОбъект(ИмяВК);
Исключение
Сообщить("Ошибка создания объекта внешней компоненты: "+ ИмяВК);
КонецПопытки;

ПОДКЛЮЧЕНИЕ КОМПОНЕНТЫ В 1С 8.x:

  ИмяВК="AddIn.IFilter";

Попытка
ПодключитьВнешнююКомпоненту(ИмяВК);
Исключение
Сообщить("Не удалось подключить компоненту " + ИмяВК);
КонецПопытки;

Попытка
ВК = Новый(ИмяВК);
Исключение
Сообщить("Ошибка создания объекта внешней компоненты: " + ИмяВК);
КонецПопытки;

*** Свойства:

  — КаталогИндексов //каталог, где хранятся индексы файлов
  — Фильтр //*.txt,*.html и др.

*** Методы:

  — ОткрытьФайл(ПутьКФайлу); //возвращает текст файла или пустую строку, если такого фильтра нет в системе
  — Индексировать(Каталог); //возвращает строковое описания результата выполнения
  — Найти(ТекстПоиска); //булево
  — ОчиститьИндексы(); //возвращает строковое описание результата выполнения
  — КоличествоФайлов(); //количество найденных файлов
  — ПолучитьФайл(ИндексФайла); //возвращает объект типа «Файл»
  — ИнформацияОбИндексах(); //возвращает строковое описание

*** Объект «Файл»:

  *** Свойства:
  — Имя //название файла
  — Каталог
  — Путь
  — Индекс //результат индексирования

43 Comments

  1. Душелов

    Посмотрел я тут у одного автора справочную систему на всяких офисных файлах, html страничках… И стало интересно, а как устроить поиск по этим файлам, которые могут храниться, как в отдельной папке, так и в составе конфигурации… Ответ прост — использовать технологии индексирования поисковых машин с использованием фильтров IFilter.

    Компонента позволяет выдернуть содержание файла (текст) и этот текст уже можно хранить в базе (или во внешних файлах) проиндексированным.

    Есть платные фильтры, а есть и бесплатные (ссылка дана в описании):

    Archive Files (like CAB, ZIP, RAR or self-extracting EXE)

    CHM Compiled HTML files

    CSF Content Sealed Format

    DjVu

    Email

    HLP Help Files

    Image Files (digital photos, JPEG, etc.)

    MHT MIME Encapsulation of Aggregate HTML Documents

    Palm Desktop

    PDF

    RTF

    Office Suites (Microsoft, WordPerfect, StarOffice, OpenOffice)

    Visio

    Reply
  2. Душелов

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

    Reply
  3. CheBurator

    пока не въехал про практическую ценность

    Reply
  4. Душелов

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

    Как раз во всякой документации ворд-экзель-хтмлной.

    Reply
  5. Душелов

    т.е. в 8-ке, к примеру, делаем справочник «инструкции пользователей», в которых в двоичном виде хранится первоначальный файл (pdf, doc, xls и т.п.) и текстовое представление (которое получается с помощью компоненты при загрузке), а уже потом ищется нужная инструкция по полнотекстовому поиску… Это как один из вариантов использования.

    Reply
  6. Душелов

    (3) Ну и сама технология http://www.osp.ru/win2000/2006/08/3873423/

    Reply
  7. K_A_O

    Идея хорошая, но в 8.1 уже встроено: объект ИзвлечениеТекста()

    Reply
  8. Душелов

    (7) Здорово, не знал, но для 7.7 подобного нет.

    + могу добавить свою систему индексирования и поиска.

    Reply
  9. Душелов

    Добавил индексирование каталогов и поиск файлов по их содержанию.

    Reply
  10. artem666

    Тоже задумывался об поисках в таких подсистемах… Но твоя идея хорошая!

    Reply
  11. dushegub

    попробуйте сделать обработку типа «Управление процессами вулканизации материальной составляющей династии и корпускуляции относительностей влажности атаки и квантованности в режиме эксцентрической тянущей бифилярности структуры»

    😉

    это почти тоже, что вы тут накрутили, успехов!

    Reply
  12. O-Planet

    dushegub — тень Душелова? Или коварная провокация на фоне недавних событий? 😉

    Reply
  13. ValentinV

    А кто-нибудь для 1с делал индексацию файловой системы?

    Reply
  14. Душелов

    (13) Для поиска файлов по названию?

    Reply
  15. ValentinV

    Да нет конечно.

    Reply
  16. Душелов

    (15) А для чего?

    Reply
  17. ValentinV

    Интересны алгоритмы и их реализация в 1с.

    Reply
  18. ValentinV

    Вы Windows наверное продаете?

    Microsoft .NET Framework 2.0, требует лицензии.

    Т.Е. демка получается платная.

    Reply
  19. Душелов

    (17) А зачем это делать в 1С?

    (18) Кто требует лицензии? Где?

    Reply
  20. vip

    (18) > Microsoft .NET Framework 2.0, требует лицензии.

    Это откуда такие сведения?

    Reply
  21. ValentinV

    На втором шаге Microsoft .NET Framework 2.0 просит

    Установщик Windows 3.0

    http://www.microsoft.com/downloads/details.aspx?FamilyId=5FBC5470-B259-4733-A914-A956122E08E8&displaylang=ru



    Этот загружаемый файл доступен пользователям, на компьютерах которых установлена подлинная ОС Microsoft Windows.

    Для запуска проверки подлинности Windows нажмите кнопку

    Reply
  22. ValentinV

    Ну а тут :

    1. http://www.osp.ru/win2000/2006/08/3873423/ — вроде нормально

    Компонент Desktop Search можно загрузить по адресу

    2. http://list.windowsitpro.com/t?ctl=40AEA:29133

    Reply
  23. Душелов

    (23) А при чем тут Desktop Search ?

    Reply
  24. ValentinV

    (3) указывал «пока не въехал про практическую ценность».

    Вотя тоже ищу… ищу.

    Reply
  25. ValentinV

    (22) На эту тоже ругается.

    Winda у меня обычная, офисная. Все на ней работают.

    Пробовал дома, то же самое.

    Сколько еще файлов надо установить,

    может пакет STUDIO еще не помешает.

    Reply
  26. ValentinV

    Может никто кроме Вас её и не пробовал устанвливать?

    А у Вас наверное Studio стоит?

    Reply
  27. vip

    (26) > Winda у меня обычная, офисная.

    Ну, тогда тебе вряд ли что поможет.

    Офисной Windы никогда не встречал.

    Reply
  28. ValentinV

    (28)Если нету разумных ответов, ну и не стоит скворчать и вякать.

    1. 50 человек в офисе работают на ней.

    2. Я тебя и не спрашивал.

    3. Ни мне и не кому твои дурацкие ответы не нужны.

    4. Лучше не доставай блин.

    ———————————————————-

    Тупо установил http://www.microsoft.com/downloads/thankyou.aspx?familyId=6a35ac14-2626-4846-bb51-ddce49d6ffb6&displayLang=ru

    Все равно просит

    http://www.microsoft.com/downloads/details.aspx?FamilyId=5FBC5470-B259-4733-A914-A956122E08E8&displaylang=ru

    Reply
  29. vip

    (29) 1. На чем? На офисной Winde? Где брал такую?

    2. А я и не отвечал. Просто сильно заинтересовала офисная Winda.

    3. НЕ КОМУ конечно не нужны.

    4. Блин вроде ниоткуда не доставал.

    5. Проблемы с подлинной ОС Microsoft Windows? Офисная не прокатывает?

    6. Не хами.

    Reply
  30. Abadonna

    Не, ребята, мне тоже интересно вас ис дас «Windows Office».

    Когда я успел просохатить?

    Reply
  31. ValentinV

    (28)Делать нечего или в заднице детство играет.

    Не лезь, если тебя не спрашивают.

    ————————————-

    А автору надо было лучше проверить.

    Reply
  32. Abadonna

    (0)»*** Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0, который можно скачать»

    Вась, а это к каждой твоей компоненте надо качать? ;))))))) А то я уж устал 🙂

    Reply
  33. ValentinV

    (33)Васе надо установочные пакеты делать

    и коробочные версии.

    Reply
  34. vip

    (32) Постараюсь объяснить, почему я вмешался.

    Зацепила фраза:

    «Microsoft .NET Framework 2.0, требует лицензии.

    Т.Е. демка получается платная.»

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

    А существование «офисной Windы» повергло меня в легкий шок.

    Я и постарался уточнить, что же это за продукт от Microsoft.

    Возможно .Net Framework несовместим с этой версией Windows?

    Reply
  35. Душелов

    Вы используете пиратскую версию виндовс? Тогда мы идем к вам! 🙂

    Reply
  36. Душелов

    (33) Ага. Для каждой надо отдельно скачивать и устанавливать. И, главное, не перепутать!

    Reply
  37. ValentinV

    (35) С пониманием Ваши обяснения принимаю…

    С сочуствием отношусь к Вашему шоковому состоянию.

    По-отцовски, настоятельно и немедленно рекомендую отдохнуть.

    ————————————————————————

    Вася хотел что-бы его программу оценили или сделали заказ.

    Если так, то я и мои друзья испытываем искренний интерес.

    Если Вася не против и не передумал я был бы признателен Васе,

    если он поможет или подскажет как профессионал высокого класса.

    Вопрос:

    Где и какую я совершаю ошибку, если у меня установленно лицензионное

    программное обеспечение, а указанную программу не удается испытать?

    С уважением, Валентин.

    З.Ы.

    Можно, а может быть даже лучше, в личку.

    Reply
  38. vip

    (38) Ну, по-отцовски Вам рановато мне рекомендовать, по моему скромному мнению. Так как для отца возраст у Вас должен перешагнуть 72-75 летний рубеж.

    Если ув. Василий согласен на ласково-уменьшительное «Вася», то он конечно подскажет.

    Но попробую, с Вашего разрешения (и надеюсь, с согласия Василия), подсказать я.

    При установленном ЛИЦЕНЗИОННОМ программном обеспечении испытание представленной программы не вызывает никаких затруднений.

    А вот при установленной «офисной Winde» успешная инсталляция сомнительна.

    Reply
  39. bookworm1c

    Проиндексировал. Сообщение: Проиндексировано …

    Файл существует, запись есть, индекс есть, при поиске запись найдена,

    а файл не находит

    *** пояснения

    После индексации и введении строки поиска и нажатии на кнопку:

    Процедура ТекстПоискаОткрытие(Элемент, СтандартнаяОбработка)

    В строке

    Если ВК.Найти(ТекстПоиска) = Истина Тогда

    Возвращает ИСТИНА

    В строке

    Для сч = 1 По ВК.КоличествоФайлов() Цикл

    ВК.КоличествоФайлов() возвращает 0

    ***

    В индексе находит запись, а инфу о файлах не находит

    Я так понимаю.

    Reply
  40. pahich

    Интересная вещь, нашел ей применение. Но вот любопытный факт — на части компьютеров работает отлично, а на части, при том что пакет установки одинаковый, не регистрирует дэ-эль-эль-ку… пока не понял почему…

    Reply
  41. Душелов

    (42) А что пишет? ОС какая?

    Reply
  42. pahich

    Разобрался 🙂

    проблемма была не в регистрации длл, а в правах доступа к открываемым файлам пользователей домена. Проблема устранена. 🙂 Только осталось непонятно почему писал ошибку подключения ВК, а не доступа к файлу %)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *