Vyhľadávač sfingy: hlavné funkcie, aplikácia

V dnešnej dobe si málokto chce vybrať produkty v internetovom obchode, kde potrebujete triediť kategórie alebo listovať v dlhých zoznamoch produktov.

K dispozícii je veľa nástrojov, vďaka ktorým je interné vyhľadávanie na stránkach rýchle, intuitívne a prispôsobené všetkým potrebám zákazníkov.

. Vyhľadávač Shpinx

Zdá sa, že vyhľadávací nástroj Sfingy sľubuje práve to. Fulltextový vyhľadávací nástroj je flexibilný a rýchly.

Sphinx funguje ako samostatný server a neukladá text pre seba. Vytvára index založený na dotaze SQL, ktorý extrahuje dokumenty z databázy, ukladá indexy a v neskoršej fáze vracia zodpovedajúce riadky.

na dopyt na vyhľadávanie informácií

Čo je Sfinga

Vyhľadávač Sfingy je fulltextový vyhľadávač, ktorý je bezplatný, rýchly a škálovateľný. Je navrhnutý pre výkon a relevantnosť. Nemá žiadne analógie v žiadnej tradičnej databáze.

Veľké množstvo známych stránok s vysokou návštevnosťou sa na ňu spolieha na pokročilú úroveň vyhľadávania a škálovateľnosti

Hlavné črty Sfingy

Sphinx pomáha umožniť a zvýšiť hodnotu vyhľadávania a škálovateľnosti prostredníctvom nasledujúcich charakteristík, vďaka ktorým je populárny medzi tisíckami vývojárov a predajcov elektronického obchodu.

  1. Vysoká rýchlosť vyhľadávania (až 150-250 Mbps na jadre s 1 000 000 dokumentmi).
  2. Podpora distribuovaného vyhľadávania v reálnom čase.
  3. Vysoká rýchlosť indexovania (až 10-15 Mbps na jadro).
  4. Vysoká škálovateľnosť (najväčší zo známych klastrov je schopný indexovať až 3 000 000 000 dokumentov a dokáže spracovať viac ako 50 miliónov žiadostí denne).
  5. Súčasná podpora viacerých polí (predvolene až 32) pre fulltextové vyhľadávanie dokumentov.
  6. Schopnosť podporovať množstvo ďalších atribútov pre každý dokument (napríklad skupiny, časové pečiatky,. atď..).
  7. Používanie zastavovacích slov.
  8. Podpora rôznych rozhraní API programovacie jazyky (napríklad pre PHP, Python, Java, Perl, Ruby, .NET A C++,. atď..).
  9. Schopnosť spracovávať jednobajtové kódovania aj UTF-8.
  10. Morfologické vyhľadávanie.
  11. Integrácia s najpopulárnejšími systémami správy databáz (napr. MySQL, PostgreSQL)

Vyhľadávač Sfingy má vo všeobecnosti viac ako 50 rôznych funkcií (a toto číslo neustále rastie).

vyhľadávanie informácií

Ako Funguje Sfinga

Celá zložitosť pracovnej schémy vyhľadávacieho nástroja je zhrnutá do 2 kľúčových bodov:

  • pomocou pôvodnej tabuľky vytvára Sphinx vlastnú databázu indexov;
  • Potom, keď používateľ odošle požiadavku API, Sphinx vráti pole ID, ktoré sa zhoduje s ID v zdrojovej tabuľke.

Prečo používať Sfinga

Hlavným dôvodom, prečo by ste ho mali používať, je rýchlosť vyhľadávania. Bežné vyhľadávanie používateľov v MySQL trvá podstatne dlhšie ako vyhľadávanie v Sphinx. Používateľ si začne všimnúť rozdiel hneď, ako má jeho databáza milióny záznamov. Ak je databáza malá (napríklad fórum 100 používateľov), nie je to presne to, čo potrebujete. Aj keď môžete skúsiť. Plus sú tu zaujímavé funkcie, ako je morfológia slova (ak používateľ hľadá mačky, bude sa zhodovať s mačkou, ak hľadá beh, bude sa zhodovať s behom, behom,. atď..).

Ďalším dôvodom je fulltextové vyhľadávanie. Už si niekto niekedy myslel, že pri hľadaní dvoch slov v službe Google ich vyhľadá v rovnakom odseku alebo v dvoch odsekoch (alebo vo vete), ale nie na celej stránke? Sfinga vám tiež umožňuje robiť podobné veci.

vyhľadávač

Škálovateľnosť je nasledovná. Ak má používateľ veľké databázy na mnohých serveroch, Sphinx sa o to postará. A aplikácia bude predpokladať, že beží na rovnakom serveri. Sphinx môže z hľadiska spracovania a vyhľadávania informácií odobrať väčšinu záťaže zo serverov PHP.

Sfinga sa mierne líši od toho, na čo je používateľ zvyknutý pri dotazoch MySQL. Nečakajte teda, že dostanete všetko okamžite.

Čo je indexovanie?

Sphinx extrahuje údaje z tabuľky v databáze MySQL a vykonáva pre ne proces nazývaný indexovanie. Indexovanie vytvorí súbor, ktorý možno ľahko nájsť pomocou Sfingy. Ak sa napríklad používateľ pokúsi nájsť dokument v programe Microsoft Word, vyhľadá slová jeden po druhom v texte dokumentu. Vo veľmi veľkých dokumentoch môže byť vyhľadávanie veľmi pomalé. Na druhej strane Sfinga vykonáva indexovanie pred vykonaním akýchkoľvek vyhľadávaní. Takto sa vytvorí index, ktorý je možné prehľadávať efektívne, a nie prehľadávať slovo po slove v celom dokumente. Dobrým príkladom je index encyklopédie. Ak chce používateľ nájsť informácie o mačkách, mohol by urobiť to isté ako Microsoft Word a prečítať si každú stránku encyklopédie pri hľadaní vzhľadu slova "mačka". Alebo sa môže pozrieť na abecedný index na konci knihy, kde je napísané, že informácie o mačkách sú k dispozícii na stranách 104, 195 a 653. Takto je to oveľa jednoduchšie.

Vyhľadávač Shpinx

Môžete vyhľadávať iba to, čo je indexované

Treba pamätať na to, že Sfinga môže vyhľadávať iba v indexe. To znamená, že zakaždým, keď chce používateľ nájsť najnovšie výsledky, musí aktualizovať index.

Prístup k údajom

Ak používateľ už pracoval s PHP s MySQL, bude to pre neho oveľa jednoduchšie. Inak by sa asi mal naučiť PHP a MySQL.

Vyhľadávací nástroj Sphinx zvyčajne vracia Id MySQL, nie údaje.

Hlavná vec, ktorú si treba pamätať na Sfingu, je, že nevyberá údaje. Po prvé, dostane ID dokumentov. Sphinx robí intenzívnu časť, ktorá hľadá konkrétne záznamy. Používateľ potom môže vykonať jednoduchú časť prostredníctvom MySQL, ktorá dostane tento dokument. Napríklad, ak Sphinx extrahuje Id dokumentov 1, 5 a 7 z indexu, potom budete musieť spustiť dotaz v MySQL, aby ste získali záznamy (pravdepodobne s ID 1.5 a 7). Možno si myslíte, že je to primitívne, ale MySQL vyžaduje veľmi málo zdrojov na vyhľadanie ID dokumentu v porovnaní s word search.

Napríklad. Povedzme, že Sfinga vytiahne dokumenty s ID 1, 5, 7 ( vyberte * z dokumentov, kde id v (1,5,7)).

Používateľ povie MySQL, že je potrebné ak chcete vybrať všetky stĺpce z tabuľky dokumentov (alebo akéhokoľvek iného, v ktorom bol výsledok), kde sa identifikátor (alebo to, čo sa nazývalo jeho pole) rovná 1, 5 alebo 7. A potom môžete použiť mysql_fetch_array v PHP, aby ste sa pozreli na údaje a robili s nimi, čo chcete.

Po zvládnutí práce v Sfinge na usporiadanie výsledkov môžete objednávku uložiť nasledovne:

  1. Uloženie poradia výsledkov v poli (stačí uložiť vlastnosť id pre zhody).
  2. Vykonanie IMPLODE na poli pomocou $result = implode(",", $array), kde $array je pole používateľských výsledkov. Výsledok uloží reťazec ID výsledkov oddelených čiarkami. * Vyberte * z dokumentov, kde id v ($výsledok) poradí podľa poľa (id,$výsledok).

Tu používateľ informuje MySQL, že je potrebné objednať výsledky podľa poľa id v poradí uvedenom v $result.

Môže sa to zdať komplikované, ale zvyknete si na to rýchlo a čoskoro užívateľ sám napíše funkcie, ktoré sa s tým všetkým vyrovnajú.

vyhľadávač

Záverečné závery

Použitie Sphinxu namiesto MySQL môže poskytnúť významné výhody v oblasti rýchlosti. Sfinga je ideálna na vyhľadávanie statických tabuliek. Zároveň však nie je možné používať jednoduché indexové súbory pre často aktualizované riadky. Namiesto toho musíte buď implementovať súbory delta, alebo prepnúť na indexovanie v reálnom čase. , obom riešeniam vznikajú ďalšie náklady na výkon. A na záver: pre efektívnejšiu prácu v Sfinge je potrebné plánovanie, pretože používateľ musí vopred nainštalovať všetky potrebné zdroje a indexové súbory.

Výmena Sphinxu za MySQL nie je triviálna, ale tiež nie je také ťažké vzdať sa tejto funkcie. Ak potrebujete vysokú rýchlosť vyhľadávania, mali by ste premýšľať o prechode z MySQL na Sphinx, aj keď používateľ nepotrebuje fulltextové vyhľadávanie.

Články na tému