Търсачка sphinx: основни функции, приложения

В днешно време едва ли някой иска да избира продукти в онлайн магазин, в който трябва да подрежда категориите или да прелиства дълги списъци с продукти.

Съществуват много инструменти, които могат да направят вътрешните търсения в сайта бързи, интуитивни и съобразени с нуждите на всеки клиент.

Търсачка Sphinx

Търсачката Sphinx изглежда обещава точно това. Пълнотекстовата търсачка е гъвкава и бърза.

Sphinx работи като самостоятелен сървър и не съхранява никакъв текст за себе си. Тя създава индекс въз основа на SQL заявка, която извлича документи от базата данни, съхранява индексите и на по-късен етап връща редове, отговарящи на заявката.

извличане на информация

Какво е Sphinx

Търсачката Sphinx е пълнотекстова търсачка търсачка, която е безплатна, бърза и мащабируема. Той е проектиран с оглед на ефективността и значимостта. Тя е несравнима с никоя традиционна база данни.

Голям брой известни сайтове с голям трафик разчитат на него за разширено търсене и мащабируемост

Основни характеристики на Sphinx

Sphinx помага да се даде възможност и да се повиши стойността на търсенето и мащабируемостта благодарение на следните характеристики, които го правят популярен сред хиляди разработчици и доставчици на електронна търговия.

  1. Висока скорост на търсене (до 150-250Mbps при ядро от 1 000 000 документа).
  2. Поддръжка на разпределено търсене в реално време.
  3. Висока скорост на индексиране (до 10-15 Mbit/sec на ядро).
  4. висока степен на мащабируемост (най-големият на известните клъстери може да индексира до 3 000 000 000 документа и да обработва повече от 50 милиона заявки на ден).
  5. Едновременна поддръжка на множество полета (до 32 по подразбиране) за пълнотекстово търсене на документи.
  6. Възможност за поддържане на редица допълнителни атрибути за всеки документ (напр. групи, времеви печати и др.). д.).
  7. Използване на спрени думи.
  8. Поддръжка на множество API езици за програмиране (напр. за PHP, Python, Java, Perl, Ruby, .NET и C ++ и др. д.).
  9. Възможност за работа с еднобайтови кодировки, както и с UTF-8.
  10. Морфологично търсене.
  11. Интеграция с най-популярните системи за управление на бази данни (напр. MySQL, PostgreSQL)

Като цяло търсачката Sphinx има повече от 50 различни функции (като броят им непрекъснато нараства).

извличане на информация

Как работи Sphinx

Сложността на схемата на търсачката се обобщава в 2 основни точки:

  • използвайки изходната таблица, Sphinx създава своя собствена база данни с индекси;
  • Когато потребител подаде заявка за API, Sphinx връща масив от идентификатори, които съответстват на идентификаторите в таблицата на източника.

Защо да използвате Sphinx

Основната причина да го използвате е скоростта на търсене. Обикновените потребителски търсения в MySQL отнемат значително повече време, отколкото търсенията в Sphinx. Потребителят ще забележи разликата веднага щом базата му данни наброява милиони записи. Ако базата данни е малка (напр. форум със 100 потребители), това не е съвсем правилно. Все пак можете да опитате. Освен това има интересни функции като морфология на думите (ако потребителят търси котки, ще намери котка; ако търси бягане, ще намери бягане, бягане и т.н.). д.).

Друга причина е търсенето в пълен текст. Замислял ли се е някой, че когато търси две думи в Google, той ги търси в един и същи параграф или в два параграфа (или в едно изречение), но не и на цялата страница? Sphinx ви позволява да правите подобни неща.

търсачка

Мащабируемостта е. Ако потребителят има големи бази данни на много сървъри, Sphinx се грижи за това. Приложението ще приеме, че е стартирано на същия сървър. Sphinx може да поеме по-голямата част от натоварването на PHP сървърите по отношение на обработката и търсенето на информация.

Сфинкс е малко по-различен от това, с което потребителят е свикнал при заявките в MySQL. Така че не очаквайте да получите всичко веднага.

Какво представлява индексирането

Sphinx извлича данни от таблица в база данни MySQL и извършва процес, наречен индексиране. Индексирането създава файл, който е лесен за търсене от Sphinx. Например, ако потребителят се опита да намери документ в Microsoft Word, той ще търси думите една по една в текста на документа. Търсенето в много големи документи може да бъде много бавно. От друга страна, Sphinx извършва индексирането преди да извърши търсене. По този начин се създава индекс, в който може да се търси ефективно, вместо да се преглежда дума по дума целият документ. Добър пример е индексът на енциклопедията. Ако потребителят иска да намери информация за котките, той може да направи това, което прави Microsoft Word, и да прочете всяка страница на енциклопедия, търсейки появата на думата "котка". Или пък може да се обърне към азбучния указател в края на книгата, където се казва, че информацията за котките е на страници 104, 195 и 653. Това е много по-лесно.

Търсачка Shpinx

Той може да търси само това, което е индексирано

Не трябва да забравяте, че Sphinx може да търси само в индекса. Това означава, че всеки път, когато потребителят иска да намери най-новите резултати, той трябва да актуализира индекса.

Достъп до данните

Ако потребителят вече е работил с PHP и MySQL, е много по-лесно. В противен случай вероятно трябва да научи PHP и MySQL.

Търсачката на Sphinx обикновено връща идентификатори на MySQL, а не данни.

Най-важното нещо, което трябва да се има предвид при Sphinx, е, че той не извлича данни. Първоначално се извличат идентификаторите на документите. Сфинкс извършва интензивната част, при която се търсят конкретни записи. След това потребителят може да изпълни проста част от MySQL, която извлича този документ. Така например, ако Sphinx извлече идентификатори на документи 1, 5 и 7 от даден индекс, ще трябва да направи запитване към MySQL, за да извлече записите (вероятно с идентификатори 1,5 и 7). Може да ви се струва, че това е примитивно, но MySQL изисква много малко ресурси за търсене на идентификатор на документ в сравнение с търсенето на дума.

Пример:. Да кажем, че Sphinx изтегля документи с идентификатори 1, 5, 7 (SELECT * FROM documents WHERE id IN (1,5,7)).

Потребителят казва на MySQL, какво е необходимо Изберете всички колони от таблицата с документи (или от всяка друга таблица, която е дала резултат), където id (или както е наречено полето) е 1, 5 или 7. След това можете да използвате mysql_fetch_array в PHP, за да разгледате данните и да направите каквото искате с тях.

След като сте усвоили функцията на Sphinx за сортиране на резултатите, можете да съхраните реда по следния начин

  1. Записване на реда на резултатите в масива (запишете само свойството id за съвпаденията).
  2. Изпълнение на IMPLODE за масив с помощта на $result = implode(",", $array), където $array е масив от резултати на потребители. Резултатът ще съхранява отделен със запетая низ от идентификатори на резултатите. - SELECT * FROM documents WHERE id IN ($result) ORDER BY FIELD(id,$result).

Това е мястото, където потребителят казва на MySQL да подреди резултатите по полето id в реда, зададен от $result.

Това може да звучи сложно, но се свиква и скоро потребителят ще пише функции, които да се справят с всичко това сами.

търсачка

Окончателни заключения

Използването на Sphinx вместо MySQL може да осигури значителни предимства по отношение на скоростта. Sphinx е идеален за статични прегледи на таблици. Но в същото време няма възможност да се използват прости индексни файлове за често актуализирани низове. Вместо това трябва да приложите делта-файлове или да преминете към индексиране в реално време. И двете решения са свързани с допълнителни разходи за производителност. В заключение, за по-ефективна работа със Sphinx е необходимо планиране, тъй като потребителят трябва предварително да разполага с всички необходими източници и индексни файлове.

Замяната на Sphinx с MySQL не е тривиална, но не е толкова сложна, че да не е необходима. Ако е необходима висока скорост на търсене, си струва да се обмисли преминаването от MySQL към Sphinx, дори ако потребителят не се нуждае от пълнотекстово търсене.

Статии по темата