Система полнотекстового поиска sqlite3-poisk
Статья не завершена.
Пакет sqlite3-poisk уже доступен в моем debian-репозитории.
Индексатор
Пример использования:
После выполнения указанной команды будет создана БД share.db в текущей директории с результатами индексирования директории /mnt/project/www/share. Пути к проиндексированным файлам отсчитываются от директории /mnt/project/www - это удобно для поиска по файлам веб-проектов, чтобы сразу получать ссылки относительно корневой директории сайта.
Утилита poisk-scanner-mbg предназначена для индексации веб-проектов, структура директорий которых совпадает с используемой автором.
TODO
В настоящее время поисковые запросы интегрированы в мой веб-портал, но я планирую их также реализовать в отдельной утилите poisk-http, которая будет принимать HTTP-запросы через stdin. Для веб-доступа к утилите рекомендую использовать tcpserver.
Запрос от другой системы на поиск документов, располагающихся в дереве директорий ниже пути /path, должен иметь следующий вид:
Запрос для получения документа по его пути uri:
При необходимости обеспечить веб-доступ пользователей непосредственно к утилите poisk более удобным является указание нужных параметров в запросе HTTP GET:
Начальная реализация будет базироваться на расширении ncgi.
Результаты поиска возвращаются в формате xHTML и имеют вид:
Планируемая производительность составляет 100 поисковых запросов в секунду на 1 ядре процессора уровня CoreQuad. Для обработки тысяч запросов в секунду необходимо использовать аналогичную реализацию на C, за основу можно взять веб-сервер fnord, работающий через tcpserver.
Upd. Проект опакечен и задокументирован, см. 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 - Система полнотекстового поиска.
Comments