Jump to content

Сфинкс (поисковик)

Сфинкс
Разработчик(и) Андрей Аксенов
Первоначальный выпуск 2001 год ; 23 года назад ( 2001 )
Стабильная версия
3.5.1 [1]  Отредактируйте это в Викиданных / 3 февраля 2023 г .; 18 месяцев назад ( 3 февраля 2023 г. )
Написано в С++
Операционная система Linux, Windows, Solaris, FreeBSD, NetBSD, Mac OS, AIX
Тип Поиск и индексация
Лицензия GPLv2 до версии 2 и коммерческой; проприетарный начиная с версии 3
Веб-сайт сфинкспоиск  Edit this on Wikidata

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]

Демон поиска Sphinx поддерживает двоичный сетевой протокол MySQL, и доступ к нему можно получить с помощью обычного MySQL API и/или клиентов. Sphinx поддерживает подмножество SQL, известное как SphinxQL. Он поддерживает стандартные запросы ко всем типам индексов с помощью SELECT, изменение индексов RealTime с помощью INSERT, REPLACE и DELETE и многое другое.

Sphinx также может предоставить специальный механизм хранения для баз данных MariaDB и MySQL. Это позволяет MySQL и MariaDB взаимодействовать со Sphinx. searchd для выполнения запросов и получения результатов. Индексы Sphinx обрабатываются как обычные таблицы SQL. Механизм хранения SphinxSE поставляется с MariaDB.

Полнотекстовые поля и индексация

[ редактировать ]

Sphinx настроен на проверку набора данных через свой индексатор. Процесс индексатора создает полнотекстовый индекс (специальную структуру данных , обеспечивающую быстрый поиск по ключевым словам) на основе заданных данных/текста. Полнотекстовые поля — это результирующий контент, индексируемый Sphinx; их можно (быстро) искать по ключевым словам. Поля имеют имена, и вы можете ограничить поиск одним полем (например, поиск только по «заголовку») или подмножеству полей (например, только по «заголовку» и «аннотации»). Формат индекса Sphinx обычно поддерживает до 256 полей. Обратите внимание, что исходные данные не сохраняются в индексе Sphinx, а удаляются в процессе индексирования; Sphinx предполагает, что вы храните это содержимое в другом месте.

Атрибуты

[ редактировать ]

Атрибуты — это дополнительные значения, связанные с каждым документом, которые можно использовать для дополнительной фильтрации и сортировки во время поиска. Атрибуты именуются. Имена атрибутов нечувствительны к регистру. Атрибуты не индексируются полнотекстово; они хранятся в индексе как есть. В настоящее время поддерживаются следующие типы атрибутов:

(начиная с версии 1.10-бета);

(начиная с версии 2.1.1-бета); [5] [6]

  • MVA, многозначные атрибуты (списки 32-битных беззнаковых целых чисел переменной длины).

Атрибуты JSON в Sphinx

[ редактировать ]

SQL Sphinx, как и классические базы данных , работает с так называемой фиксированной схемой , то есть набором предопределённых столбцов атрибутов. Они хорошо работают, когда большая часть хранимых данных на самом деле имеет значения: сопоставление разреженных данных со статическими столбцами может быть обременительным. Предположим, например, что вы используете сайт сравнения цен или сайт аукциона с множеством различных категорий товаров. Некоторые атрибуты, такие как цена или продавец, одинаковы для всех товаров. Но оттуда для ноутбуков еще нужно хранить вес, размер экрана, тип жесткого диска, объем оперативной памяти и т. д. А, скажем, для лопат вы наверняка захотите хранить цвет, длину ручки и т. д. Таким образом, этим можно управлять в рамках одной категории, но всех отдельных полей, которые вам нужны для всех товаров во всех категориях, множество. Поле JSON можно использовать для решения этой проблемы. Внутри атрибута JSON вам не нужна фиксированная структура. У вас могут быть различные ключи, которые могут присутствовать или не присутствовать во всех документах. Когда вы попытаетесь отфильтровать один из этих ключей, Sphinx будет игнорировать документы, у которых нет ключа в атрибуте JSON, и будет работать только с теми документами, у которых он есть.

Лицензия

[ редактировать ]

Вплоть до версии 3 Sphinx имеет двойную лицензию ; или:

  1. Стандартная общественная лицензия GNU версии 2 или
  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]

См. также

[ редактировать ]
  1. ^ «3 февраля 2023 г. Выпущен Sphinx 3.5.1» . Проверено 15 июня 2023 г.
  2. ^ «AskMonty: О SphinxSE» . kb.askmonty.org . Программа Монти AB . Проверено 16 августа 2013 г.
  3. ^ «Сфинкс Wiki: Сторонние инструменты» . sphinxsearch.com . Поиск Сфинкса вики . Проверено 16 августа 2013 г.
  4. ^ "xmlpipe2" . sphinxsearch.com . Документация по поиску Сфинкса . Проверено 16 августа 2013 г.
  5. ^ «Атрибуты JSON в Sphinx 2.1.1» . sphinxsearch.com . Блог поиска Сфинкса. 7 февраля 2013 года . Проверено 16 августа 2013 г.
  6. ^ «Полная поддержка JSON в транке» . sphinxsearch.com . Блог поиска Сфинкса. 8 августа 2013 года . Проверено 16 августа 2013 г.
  7. ^ «Сфинкс | Поисковый сервер с открытым исходным кодом» .
  8. ^ «Сфинкс на Крейгслисте» . Craigslist.org . Крейгслист . Проверено 17 августа 2013 г.
  9. ^ «Рекрутинг GM» . aleph-networks.com . Алеф-сети . Проверено 1 октября 2012 года .
  10. ^ «Молниеносный PHP-поиск по сайту» . tradebit.com . Трейдбит . Проверено 17 августа 2013 г.
  11. ^ «Бета-версия Sphinx Search для Vbulletin 4.0» . vbulletin.com . Вбюллетень . Проверено 17 августа 2013 г.
  12. ^ «Расширение поиска Sphinx для MediaWiki» . mediawiki.org . MediaWiki: Свемир Бркич, Пол Гринберг . Проверено 17 августа 2013 г.
  13. ^ «При поддержке Sphinx Search: Boardreader» . sphinxsearch.com . Поиск Сфинкса . Проверено 17 августа 2013 г.
  14. ^ Jump up to: а б «При поддержке Сфинкса» . sphinxsearch.com/ .
  15. ^ «О Сфинксе» . sphinxsearch.com . Поиск Сфинкса . Проверено 16 августа 2013 г.
  16. ^ Jump up to: а б «При поддержке Сфинкса» . sphinxsearch.com . Поиск Сфинкса . Проверено 10 мая 2015 г.
  17. ^ «Крейгслист: информационный бюллетень» . Craigslist.org . Крейгслист. Архивировано из оригинала 5 августа 2012 года . Проверено 16 августа 2013 г.
  18. ^ «О поиске Мантикоры» . manticoresearch.com . Проверено 24 апреля 2023 г.
  19. ^ «Поиск Мантикоры: 3 года после разветвления от Сфинкса» . manticoresearch.com . Проверено 2 мая 2024 г.
  20. ^ «manticoresoftware/manticoresearch» . Гитхаб . Проверено 2 мая 2024 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5eadb3a5381b3befab71ed8da2d4a438__1715236740
URL1:https://arc.ask3.ru/arc/aa/5e/38/5eadb3a5381b3befab71ed8da2d4a438.html
Заголовок, (Title) документа по адресу, URL1:
Sphinx (search engine) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)