API поисковой машины: SQL интерфейс

Используемый SQL

Схема БД

Запись результатов в БД с помощью скрипта

Запись результатов в БД через ODBC

Запись результатов в БД через XML файл

Формирование отчета о поиске

Используемый SQL

Команды заполнения БД используют стандартный язык SQL. Учитывая, что СУБД иногда весьма вольно трактуют некоторые синтаксические моменты, нельзя гарантировать, что поисковая машина будет нормально работать с какой-либо СУБД без модификаций. мы проверяли работу с Oracle 7, Oracle 9.2 и MySQL.

 

 

 

Схема БД

ER диаграмма - схема БД

MySQL. Сборник рецептов: подробнее

Поль Дюбуа
MySQL. Сборник рецептов

Для создания схемы в БД Oracle можно использовать этот скрипт, а в MySQL - такой скрипт.

Для удаления всех таблиц схемы - скрипт.

Для удаления данных в таблицах - скрипт.

 

Запись результатов в БД с помощью скрипта

Используйте опцию -listfiles:sql "имя_файла_скрипта" (см. описание опций).

Создаваемый файл содержит SQL-команды INSERT, которые заносят все необходимые данные в таблицы. Обратите внимание, что команды COMMIT в скрипте нет - так что необходимо позаботиться о фиксации транзакции, если по умолчанию СУБД не фиксирует транзакции сама (как это делает Jet в MS Access).

Формируемый файл - обычный текст, SQL-команды в нем отделяются символом ';'. Исполнение скрипта специфично для конкретной СУБД, кроме того есть достаточно много инструментальных средств для работы с СУБД.

Например, для СУБД Oracle можно использовать утилиту SQL*Plus.

Заметим, что для выполнения скрипта в SQL*Plus (и многих других утилитах, работающих с Oracle) требуется, чтобы скрипт отвечал некоторым правилам, которые прямого отношения к SQL не имеют. В частности, символ & нередко используется для указания на определяемый пользователем параметр. А, к примеру, поле HIT_HTML_CONTEXT в таблице HIT содержит html-форматированный текст, в котором постоянно встречаются комбинации символов типа  .

Чтобы избежать некоторых проблем, связанных с загрузкой скрипта в Oracle, используются две дополнительные опции:

-tune sqlplus -tune oracle_varchar2

Первая заставляет особым образом переформатировать строковые литералы. Вторая контролирует, что строковые литералы не превышают в длину 2000 символов, так как тип данных VARCHAR2 в Oracle имеет такую максимальную вместимость.

Итак, для генерации скрипта для загрузки в Oracle опции будут такие:

 -tune sqlplus -tune oracle_varchar2 -listfiles:sql "имя_файла_скрипта"

Для MySQL достаточно команды

-listfiles:sql "имя_файла_скрипта"

Можно также использовать специально написанную для этого утилиту SQL2ODBC.

 

Запись результатов в БД через ODBC

Используйте опцию -listfiles:odbc "login/psw@alias" (см. описание опций).

Особенностью является то, что после занесения очередной записи в таблицу HIT транзакция фиксируется, чтобы можно было в онлайне смотреть содержимое БД и видеть ход поиска.

Для загрузки данных в БД Oracle необходимо указать еще опцию -tune oracle_varchar2, чтобы строковые литералы не превысили 2000 символов - такова предельная вместимость типа VARCHAR2 этой СУБД. Для СУБД MySQL тип данных TEXT такого ограничения не имеет, поэтому указывать дополнительные опции не требуется.

 

Запись результатов в БД через XML файл

Поисковая машина умеет формировать результаты в XML файле. Мы приложили особые усилия к тому, чтобы XML-схема однозначно и прозрачно преобразовывалась в классическую реляционную схему баз данных.

Прежде всего, XML файл результатов может быть прямо загружен в некоторые СУБД. Например, MS Access 2003 позволяет импортировать данные из XML файла. При этом будет построена и схема базы данных. Немного подробнее об этом сказано здесь.

 

Формирование отчета о поиске

Занесенные в БД результаты поиска удобно просматривать в виде отчета. Можно использовать различные инструменты для формирования отчетов, для некоторых СУБД они являются частью пакета (как, например, для MS Access, или Oracle Reports).

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

Допустим, для подключения к БД используется ODBC алиас faind, пользователь testusr и пароль testpsw.

Выполняем поиск и записываем результаты в БД:

faind ... -listfiles:odbc "testusr/testpsw@faind"

Формируем отчет на основе шаблона (faind.html - это обычный файл HTML с дополнительными командами; его можно скачать):

db_report faind.html report.html faind testusr testpsw

Запускаем назначенный по умолчанию браузер для просмотра:

report.html

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

Результат будет примерно таким. Вся разметка и оформление сделаны с помощью HTML редактора, а утилита DB_REPORT просто выполнила извлечение данных из базы и подстановку результатов.

Где скачать поисковую систему и SDK

Скачать SDK поисковой системы с примерами и другие компоненты можно здесь поисковая система

  © Mental Computing 2010
изменено 16-Aug-11