Плагіни пошукової системи
Призначення плагінів
Плагіни це модулі розширення, які дозволяють ввести в пошуковий двигун підтримку нових форматів документів і архівів, а також змінити обробку запитів користувача. У пошуковому движку використовуються такі види плагінів:
- content plugins - робота з файлами нових форматів english manual
- unpacker plugins - робота з архівами (розпакувальники) english manual
- engine plugins - зовнішні пошукові движки та обробники запитів (див. команду -engine) english manual
- lexer plugins - лексери, препроцесори тексту (див. команду -preprocess) english manual
- preview-плагіни - використовуються лише віконною версією пошукової системи для відображення вмісту документів (див. докладніше) english manual
- media info plugins - повертають для різних джерел документів короткий і розгорнутий опис, наприклад, ці плагіни можуть повернути для CD/DVD не просто ім'я диска, а проаналізувати вміст і повернути зручнішу назву та коротку анотацію english manual
- Сегментатори тексту та токенізатори - дозволяють реалізувати свої алгоритми розбивки тексту на слова, у тому числі для мов, у яких немає звичайних позначень меж слів пробілами. Детальний опис тут.
Технічно плагіни реалізуються як звичайні DLL Windows. Для того щоб пошуковий двигун міг автоматично підключати плагіни, вони повинні бути розроблені з урахуванням деяких специфікацій. Специфікації плагінів повністю відкриті, а щоб полегшити створення плагінів сторонніми розробниками, ми включили приклади плагінів, що реально працюють, в SDK пошукової системи.
Серед плагінів можна виділити метаплагіни, які дозволяють підключати модулі розширення для інших програм,перетворюючи дзвінки API пошукової системи на потрібний формат. Для вилучення тексту розроблено метаплагін 2text, який дозволяє використовувати будь-які консольні програми для перетворення документа в простий текст (ASCII або utf-8). До цього метаплагіну підключаються такі модулі, як dvi2tty та DjVe2Txt. Для розпакувальників є метаплагін wcx_unpacker , який дозволяє використовувати WCX плагіни файлового менеджера Total Commander.
Розміщення та підключення
Плагіни за замовчуванням повинні розміщуватись у каталозі пошукового движка в підкаталозі. \plugins. Окремі види плагінів розміщуються у своїх підкаталогах:
1. плагіни-розпакувальники - у підкаталозі \plugins\unpackers
2. розбирачі форматів документів (парсери) - у підкаталозі \plugins\filetypes
2. інтерфейси до зовнішніх пошукових движків - у підкаталозі \plugins\engines
Шлях до каталогу з плагінами можна перевизначити в конфігураційному файлі, задавши інше значення параметрів plugins_path, lister_plugins та hex_lister_plugin у розділі [general].
Після завантаження пошуковий движок сам просканує вищезгадані підкаталоги і спробує підвантажити та зареєструвати у своїх таблицях усі файли з розширенням dll. Для отримання списку зареєстрованих плагінів використовується команда Help.
Специфікації API
2text- метаплагін, який може викликати зовнішні програми для отримання тексту з документів різних форматів. З його допомогою можна використовувати консольні утиліти, скрипти на VisualBasic або Python - загалом будь-які програмні засоби, які дозволяють отримати ім'я файлу в одному форматі та записати результат у файл у форматі TXT, HTML або RTF.
Розпакувальники
Плагіни розпакувальників підтримують такі особливості:
1.Розпакування даних у тимчасовий каталог з автоматичним чищенням при розвантаженні плагіна.
2. Допускається необмежена рекурсія - якщо розпакувальник витягує з архіву інший архів, навіть цього формату, плагін повинен відкрити нову сесію роботи з архівом незалежно від стану розпакування раніше відкритих архівів.
4. Підтримка юнікоду.
Зовнішні двигуни
Плагіни двигунів дозволяють виконувати кілька функцій, зокрема:
1.QueryRewriter- змінює текст запитів перед їх парсингом пошуковою системою. Наприклад, плагін може виправляти кодування (український текст, набраний в англійській розкладці), замінювати ключові слова логічних операторів, наводячи їх до виду OR/AND/OR, що приймається системою.
2.SimpleSearcher- виконувати елементарний запит, результатом якого є єдиний рядок тексту у форматі TXT або HTML. Наприклад, плагін-калькулятор може відфільтровувати введені арифметичні вирази та видавати результат розрахунку. У цьому випадку консольна пошукова утиліта в інтерактивному режимі працюватиме яккалькулятор.
3.Searcher- реалізує основне призначення цих плагінів, виконує запит до зовнішнього пошукового движка та повертає список знайдених файлів. Наприклад, таким чином реалізовано метапошук в Інтернеті, пошук по FTP та розподілений пошук.
4.ActiveScripter- плагін аналізує запит і складає сценарій його виконання модулями движка. Цей тип плагіна призначений для високорівневих алгоритмів, наприклад, для реалізації режиму підтримки діалогу з користувачем для уточнення запиту.
Опис API плагінів-движків – тут.
Заснована функція лексерів - виконати будь-яке перетворення тексту перш, ніж він надійде навбудований Word Broker. За допомогою цих плагінів можна виконувати дешифрування тексту, його переклад, сегментацію для ієрогліфічних мов тощо. API дуже простий - плагін отримають рядок вихідного тексту та повертає рядок перетвореного тексту.
Включення необхідних лексерів у процес обробки області пошуку виконується командою -preprocess.
Приклади плагінів
Приклади плагінів входять до SDK пошукового двигуна.