Выпуск поискового сервера Xapiand 0.9
Доступен выпуск поискового сервера Xapiand 0.9, предназначенного для хранения, индексации и поиска большой коллекции документов. Сервер является надстройкой над библиотекой для создания поисковых движок Xapian. Для асинхронной обработки запросов применяется библиотека libev. Код сервера написан на C++ и поставляется под лицензией MIT. Для упрощения развертывания предоставляется готовый образ для системы Docker.
Обращение к серверу производится через HTTP RESTful API. Документы могут представлять собой любые данные в форматах JSON или MessagePack. Определение схемы хранения не требуется, выборка осуществляется при помощи полнотекстовых поисковых запросов. Поддерживается создание специализированных индексов для определенных типов данных и прикрепление более одного индекса. В том числе предоставляется встроенная поддержка индексации геопространственных данных, позволяющая комбинировать данные о местоположении с операциями полнотекстового поиска. Поддерживаются различные форматы хранения координат и иерархические пространственные индексы HTM (Hierarchical Triangular Mesh).
Сервер отличается высокой производительностью, низким потреблеением памяти и возможностью создания распределенных и отказоустойчивых систем, в которых индексы разделены (на каждом узле своя часть индекса и в выполнение запроса вовлекается несколько узлов) или реплицированы (на каждом узле копия полного индекса и возможна балансировка нагрузки) на несколько узлов кластера. Заявляется производительность операций поиска близкая к обработке запросов в режиме реального времени. Индексы могут включать в себя файлы и полные исходные данные, что позволяет использовать Xapiand в качестве хранилища с функцией полнотекстового поиска.
Новый выпуск примечателен переходом на движок Xapian 1.5.0, существенным увеличением производительности и стабилизацией средств для обработки геопространственных данных. Кроме того, представлена поддержка языка запросов QueryDSL, позволяющего формировать запросы в формате JSON. Например, можно применять логические операторы, фильтровать вывод по определенным значениям полей в документах, учитывать вес и число совпадений, преобразовывать значений полей из одного формата в другой, отсеивать документы на основании пространств имен (вложенных полей, например, для хранения тегов).