среда, 13 января 2010 г.

Система полнотекстового поиска sqlite3-poisk

Статья не завершена.

Пакет sqlite3-poisk уже доступен в моем debian-репозитории.

Индексатор

Пример использования:
poisk-scanner share.db /mnt/project/www/share /mnt/project/www

После выполнения указанной команды будет создана БД share.db в текущей директории с результатами индексирования директории /mnt/project/www/share. Пути к проиндексированным файлам отсчитываются от директории /mnt/project/www - это удобно для поиска по файлам веб-проектов, чтобы сразу получать ссылки относительно корневой директории сайта.

Утилита poisk-scanner-mbg предназначена для индексации веб-проектов, структура директорий которых совпадает с используемой автором.

TODO
В настоящее время поисковые запросы интегрированы в мой веб-портал, но я планирую их также реализовать в отдельной утилите poisk-http, которая будет принимать HTTP-запросы через stdin. Для веб-доступа к утилите рекомендую использовать tcpserver.

Запрос от другой системы на поиск документов, располагающихся в дереве директорий ниже пути /path, должен иметь следующий вид:
X-POISK-PATH path
X-POISK-QUERY query
X-POISK-LIMIT max_count
X-POISK-OFFSET offset_count

Запрос для получения документа по его пути uri:
X-POISK-URI uri
X-POISK-QUERY query

При необходимости обеспечить веб-доступ пользователей непосредственно к утилите poisk более удобным является указание нужных параметров в запросе HTTP GET:
GET /path?q=query&limit=max_count&offset=offset-count HTTP/1.1
GET /uri?q=query HTTP/1.1

Начальная реализация будет базироваться на расширении ncgi.

Результаты поиска возвращаются в формате xHTML и имеют вид:
...


Планируемая производительность составляет 100 поисковых запросов в секунду на 1 ядре процессора уровня CoreQuad. Для обработки тысяч запросов в секунду необходимо использовать аналогичную реализацию на C, за основу можно взять веб-сервер fnord, работающий через tcpserver.

Upd. Проект опакечен и задокументирован, см. Poisk - Система полнотекстового поиска.

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru