Сфинкс (поисковик)
![]() | |
Разработчик(и) | Андрей Аксенов |
---|---|
Первоначальный выпуск | 2001 год |
Стабильная версия | 3.5.1 [1] ![]() |
Написано в | С++ |
Операционная система | Linux, Windows, Solaris, FreeBSD, NetBSD, Mac OS, AIX |
Тип | Поиск и индексация |
Лицензия | GPLv2 до версии 2 и коммерческой; проприетарный начиная с версии 3 |
Веб-сайт | сфинкспоиск ![]() |
Sphinx — это система полнотекстового поиска , предоставляющая клиентским приложениям функции текстового поиска.
Обзор
[ редактировать ]Sphinx можно использовать либо как автономный сервер, либо как механизм хранения («SphinxSE») для семейства баз данных MySQL.При запуске в качестве автономного сервера Sphinx работает аналогично СУБД и может взаимодействовать с MySQL , MariaDB и PostgreSQL через их собственные протоколы или с любой ODBC-совместимой СУБД через ODBC . MariaDB , ответвление MySQL, распространяется вместе со SphinxSE. [2]
СфинксAPI
[ редактировать ]Если Sphinx запускается как автономный сервер, можно использовать SphinxAPI для подключения к нему приложения. Официальные реализации API доступны для языков PHP , Java , Perl , Ruby и Python . Неофициальные реализации для других языков, а также различных сторонних разработчиков. [3] также доступны плагины и модули. Другие источники данных можно индексировать через канал в пользовательском формате XML . [4]
СфинксQL
[ редактировать ]Демон поиска Sphinx поддерживает двоичный сетевой протокол MySQL, и доступ к нему можно получить с помощью обычного MySQL API и/или клиентов. Sphinx поддерживает подмножество SQL, известное как SphinxQL. Он поддерживает стандартные запросы ко всем типам индексов с помощью SELECT, изменение индексов RealTime с помощью INSERT, REPLACE и DELETE и многое другое.
СфинксSE
[ редактировать ]Sphinx также может предоставить специальный механизм хранения для баз данных MariaDB и MySQL. Это позволяет MySQL и MariaDB взаимодействовать со Sphinx. searchd
для выполнения запросов и получения результатов. Индексы Sphinx обрабатываются как обычные таблицы SQL. Механизм хранения SphinxSE поставляется с MariaDB.
Полнотекстовые поля и индексация
[ редактировать ]Sphinx настроен на проверку набора данных через свой индексатор. Процесс индексатора создает полнотекстовый индекс (специальную структуру данных , обеспечивающую быстрый поиск по ключевым словам) на основе заданных данных/текста. Полнотекстовые поля — это результирующий контент, индексируемый Sphinx; их можно (быстро) искать по ключевым словам. Поля имеют имена, и вы можете ограничить поиск одним полем (например, поиск только по «заголовку») или подмножеству полей (например, только по «заголовку» и «аннотации»). Формат индекса Sphinx обычно поддерживает до 256 полей. Обратите внимание, что исходные данные не сохраняются в индексе Sphinx, а удаляются в процессе индексирования; Sphinx предполагает, что вы храните это содержимое в другом месте.
Атрибуты
[ редактировать ]Атрибуты — это дополнительные значения, связанные с каждым документом, которые можно использовать для дополнительной фильтрации и сортировки во время поиска. Атрибуты именуются. Имена атрибутов нечувствительны к регистру. Атрибуты не индексируются полнотекстово; они хранятся в индексе как есть. В настоящее время поддерживаются следующие типы атрибутов:
- целые числа без знака (шириной от 1 до 32 бит);
- UNIX Временные метки ;
- значения с плавающей запятой (32 бита, одинарная точность IEEE 754);
- строковые порядковые номера (специально вычисляемые целые числа);
- струны
(начиная с версии 1.10-бета);
(начиная с версии 2.1.1-бета); [5] [6]
- MVA, многозначные атрибуты (списки 32-битных беззнаковых целых чисел переменной длины).
Атрибуты JSON в Sphinx
[ редактировать ]SQL Sphinx, как и классические базы данных , работает с так называемой фиксированной схемой , то есть набором предопределённых столбцов атрибутов. Они хорошо работают, когда большая часть хранимых данных на самом деле имеет значения: сопоставление разреженных данных со статическими столбцами может быть обременительным. Предположим, например, что вы используете сайт сравнения цен или сайт аукциона с множеством различных категорий товаров. Некоторые атрибуты, такие как цена или продавец, одинаковы для всех товаров. Но оттуда для ноутбуков еще нужно хранить вес, размер экрана, тип жесткого диска, объем оперативной памяти и т. д. А, скажем, для лопат вы наверняка захотите хранить цвет, длину ручки и т. д. Таким образом, этим можно управлять в рамках одной категории, но всех отдельных полей, которые вам нужны для всех товаров во всех категориях, множество. Поле JSON можно использовать для решения этой проблемы. Внутри атрибута JSON вам не нужна фиксированная структура. У вас могут быть различные ключи, которые могут присутствовать или не присутствовать во всех документах. Когда вы попытаетесь отфильтровать один из этих ключей, Sphinx будет игнорировать документы, у которых нет ключа в атрибуте JSON, и будет работать только с теми документами, у которых он есть.
Лицензия
[ редактировать ]Вплоть до версии 3 Sphinx имеет двойную лицензию ; или:
- Стандартная общественная лицензия GNU версии 2 или
- проприетарное лицензирование доступно для случаев использования, которые не подпадают под условия GNU GPLv2.
Начиная с версии 3, Sphinx стал проприетарным, с обещанием выпустить его исходный код в будущем. [7]
Примеры использования сфинкса
[ редактировать ]- Craigslist.org [8]
- Recruitment.aleph-graymatter.com [9]
- Tradebit.com [10]
- vBulletin.com [11]
- Расширение Медиавики [12]
- Boardreader.com [13]
- OMBE.com [14]
- Limundo.com [14]
Список функций
[ редактировать ]- Пакетное и инкрементальное (мягкое в режиме реального времени) полнотекстовое индексирование.
- Поддержка нетекстовых атрибутов ( скаляров , строк, наборов , JSON).
- Прямая индексация баз данных SQL. Встроенная поддержка MySQL , MariaDB , PostgreSQL , MSSQL , а также возможность подключения ODBC .
- Поддержка индексации XML-документов.
- Поддержка распределенного поиска «из коробки».
- Интеграция через API доступа .
- Поддержка SQL-подобного синтаксиса через MySQL (начиная с версии 0.9.9). протокол
- Синтаксис полнотекстового поиска.
- Обработка набора результатов, подобная базе данных.
- Ранжирование релевантности с использованием дополнительных факторов, помимо стандартного BM25 .
- Поддержка обработки текста для SBCS и UTF-8 кодировок , стоп-слов , индексации слов, о которых известно, что они не появляются в базе данных («без попадания»), создания основы , форм слов, исключений токенизации и «смешанных символов» (двойное индексирование как реального символ и разделитель слов).
- Поддерживает UDF (начиная с версии 2.0.1).
Производительность и масштабируемость
[ редактировать ]- Скорость индексации до 10-15 МБ/сек на ядро и HDD.
- Скорость поиска более 500 запросов в секунду по 1 000 000 документов/коллекции 1,2 ГБ с использованием 2-ядерной настольной системы с 2 ГБ оперативной памяти. [15]
- Самая крупная известная установка с использованием Sphinx — Boardreader.com — индексирует 16 миллиардов документов. [16]
- Самая загруженная известная установка Craigslist обслуживает более 300 000 000 запросов в день. [16] и более 50 миллиардов просмотров страниц в месяц. [17]
Вилка
[ редактировать ]В 2017 году ключевые члены первоначальной команды Sphinx создали форк проекта под названием Manticore. [18] с целью исправления ошибок и разработки новых функций. [19] В отличие от Sphinx, Manticore продолжает выпускаться с открытым исходным кодом под лицензией GPL версии 3 . [20]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «3 февраля 2023 г. Выпущен Sphinx 3.5.1» . Проверено 15 июня 2023 г.
- ^ «AskMonty: О SphinxSE» . kb.askmonty.org . Программа Монти AB . Проверено 16 августа 2013 г.
- ^ «Сфинкс Wiki: Сторонние инструменты» . sphinxsearch.com . Поиск Сфинкса вики . Проверено 16 августа 2013 г.
- ^ "xmlpipe2" . sphinxsearch.com . Документация по поиску Сфинкса . Проверено 16 августа 2013 г.
- ^ «Атрибуты JSON в Sphinx 2.1.1» . sphinxsearch.com . Блог поиска Сфинкса. 7 февраля 2013 года . Проверено 16 августа 2013 г.
- ^ «Полная поддержка JSON в транке» . sphinxsearch.com . Блог поиска Сфинкса. 8 августа 2013 года . Проверено 16 августа 2013 г.
- ^ «Сфинкс | Поисковый сервер с открытым исходным кодом» .
- ^ «Сфинкс на Крейгслисте» . Craigslist.org . Крейгслист . Проверено 17 августа 2013 г.
- ^ «Рекрутинг GM» . aleph-networks.com . Алеф-сети . Проверено 1 октября 2012 года .
- ^ «Молниеносный PHP-поиск по сайту» . tradebit.com . Трейдбит . Проверено 17 августа 2013 г.
- ^ «Бета-версия Sphinx Search для Vbulletin 4.0» . vbulletin.com . Вбюллетень . Проверено 17 августа 2013 г.
- ^ «Расширение поиска Sphinx для MediaWiki» . mediawiki.org . MediaWiki: Свемир Бркич, Пол Гринберг . Проверено 17 августа 2013 г.
- ^ «При поддержке Sphinx Search: Boardreader» . sphinxsearch.com . Поиск Сфинкса . Проверено 17 августа 2013 г.
- ^ Jump up to: а б «При поддержке Сфинкса» . sphinxsearch.com/ .
- ^ «О Сфинксе» . sphinxsearch.com . Поиск Сфинкса . Проверено 16 августа 2013 г.
- ^ Jump up to: а б «При поддержке Сфинкса» . sphinxsearch.com . Поиск Сфинкса . Проверено 10 мая 2015 г.
- ^ «Крейгслист: информационный бюллетень» . Craigslist.org . Крейгслист. Архивировано из оригинала 5 августа 2012 года . Проверено 16 августа 2013 г.
- ^ «О поиске Мантикоры» . manticoresearch.com . Проверено 24 апреля 2023 г.
- ^ «Поиск Мантикоры: 3 года после разветвления от Сфинкса» . manticoresearch.com . Проверено 2 мая 2024 г.
- ^ «manticoresoftware/manticoresearch» . Гитхаб . Проверено 2 мая 2024 г.
Дальнейшее чтение
[ редактировать ]- Аксенов, Андрей (2011). Введение в поиск с помощью Sphinx: от установки до настройки релевантности . О'Рейли Медиа. ISBN 978-0-596-80955-3 .
- Али, Аббас (2011). Руководство для начинающих по поиску Sphinx . Бирмингем, Англия: Packt Publishing. ISBN 978-1-84951-254-1 .
- Больше никакого открытого исходного кода (2017 г.) https://sphinxsearch.com/blog/2017/07/24/sphinx-2017/
Внешние ссылки
[ редактировать ]
- Официальный сайт
- SphinxSE в базе знаний MariaDB
- https://manticoresearch.com/ — форк Manticore с открытым исходным кодом.