Iskalnik sfinga: osnovne funkcije, aplikacije

Dandanes skoraj nihče ne želi izbirati izdelkov v spletni trgovini, kjer je treba razvrščati po kategorijah ali se pomikati po dolgih seznamih izdelkov.

Na voljo je veliko orodij, s katerimi je iskanje po notranjem spletnem mestu hitro, intuitivno in prilagodljivo vsem potrebam strank.

Iskalnik Sfinga

Zdi se, da iskalnik Sphinx obljublja prav to. Iskalnik celotnega besedila je prilagodljiv in hiter.

Sfinga deluje kot samostojni strežnik in sama ne shranjuje besedila. Indeks ustvari na podlagi poizvedbe SQL, ki iz podatkovne zbirke izlušči dokumente, shrani indekse in pozneje vrne vrstice, ki ustrezajo poizvedbi.

iskanje informacij

Kaj je Sfinga

Iskalnik Sfinga je iskalnik celotnega besedila iskalnik, Brezplačno, hitro in prilagodljivo. Zasnovan je za produktivnost in ustreznost. Neprimerljivo s katero koli tradicionalno podatkovno zbirko.

Številna znana spletna mesta z veliko prometa se zanašajo nanj zaradi naprednega iskanja in skalabilnosti

Osnovne zmožnosti sistema Sfinx

Sphinx pomaga omogočiti in povečati vrednost iskanja in skalabilnosti z naslednjimi funkcijami, zaradi katerih je priljubljen pri tisočih razvijalcih in prodajalcih e-trgovine.

  1. Velika hitrost iskanja (do 150-250 Mbit/s na jedro pri 1.000.000 dokumentih).
  2. Podpora za porazdeljeno iskanje v realnem času.
  3. Visoka hitrost indeksiranja (do 10-15 Mbit/s na jedro).
  4. Velika razširljivost (največji Indeksiranje do 3.000.000.000 dokumentov in več kot 50 milijonov poizvedb na dan).
  5. hkratna podpora za več polj (privzeto do 32) za iskanje dokumentov v celotnem besedilu.
  6. možnost podpore številnim dodatnim atributom za vsak dokument (npr. skupine, časovni žigi itd.). д.).
  7. Uporaba ustavljenih besed.
  8. podpora različnih API programski jeziki (npr. za PHP, Python, Javo, Perl, Ruby, .NET in C ++ itd. д.).
  9. zmožnost obdelave enobajtnih kodiranj in UTF-8.
  10. Morfološko iskanje.
  11. Integracija z najbolj priljubljenimi sistemi za upravljanje podatkovnih baz (npr. MySQL, PostgreSQL)

Iskalnik Sphinx ima skupno več kot 50 različnih funkcij (in to število nenehno narašča).

iskanje informacij

Kako deluje Sfinga

Celotna zapletenost sheme iskalnika je povzeta v dveh ključnih točkah:

  • z uporabo izvorne tabele, Sfinx ustvari svojo indeksno podatkovno bazo;
  • ko uporabnik pošlje zahtevo API, Sfinga vrne polje identifikatorjev, ki ustrezajo identifikatorjem v izvorni tabeli.

Zakaj uporabljati Sfingo

Glavni razlog za njegovo uporabo je hitrost iskanja. Običajna iskanja uporabnikov v sistemu MySQL trajajo precej dlje kot iskanja v sistemu Sfinga. Uporabnik opazi razliko takoj, ko ima njegova podatkovna zbirka na milijone zapisov. Če je zbirka podatkov majhna (npr. forum s 100 uporabniki), to ni povsem to, kar je potrebno. Lahko pa jo preizkusite. Poleg tega so na voljo zanimive funkcije, kot je morfologija besed (če uporabnik išče mačke, se bo ujemala z mačkami, če išče tek, se bo ujemala s tekom, tekom itd.). д.).

Drugi razlog je iskanje po celotnem besedilu. Ali je kdo kdaj pomislil, da Google pri iskanju dveh besed išče v istem odstavku ali v dveh odstavkih (ali v stavku), ne pa na celotni strani?? Sfinga vam omogoča podobne stvari.

iskalnik

Skalabilnost je povezana z. Če ima uporabnik velike zbirke podatkov na več strežnikih, za to poskrbi Sphinx. Aplikacija bo domnevala, da se izvaja v istem strežniku. Sfinga lahko prevzame večino obremenitve strežnikov PHP v smislu obdelave in iskanja.

Sfinx se nekoliko razlikuje od poizvedb, ki jih je uporabnik vajen pri poizvedbah MySQL. Zato ne pričakujte, da boste vse dobili takoj.

Kaj je indeksiranje

Sfinx pridobi podatke iz tabele v zbirki podatkov MySQL in izvede postopek, ki se imenuje indeksiranje. Indeksiranje ustvari datoteko, ki jo je mogoče zlahka najti z orodjem Sphinx. Na primer, če uporabnik poskuša najti dokument v programu Microsoft Word, bi v besedilu dokumenta iskal besede eno za drugo. V zelo velikih dokumentih je lahko iskanje zelo počasno. Po drugi strani pa Sfinga pred iskanjem indeksira. Tako se ustvari indeks, ki ga je mogoče učinkovito iskati, namesto da bi besedo za besedo pregledovali celoten dokument. Dober primer je kazalo enciklopedije. Če bi uporabnik želel poiskati informacije o mačkah, bi lahko storil to, kar je storil Microsoft Word, in prebral vsako stran enciklopedije ter poiskal besedo "mačka". Lahko pa poiščete abecedno kazalo na koncu knjige, kjer piše, da so informacije o mačkah na straneh 104, 195 in 653. To je veliko enostavneje.

Iskalnik Shpinx

Iščete lahko samo tisto, kar je indeksirano

Ne smete pozabiti, da lahko Sfinga išče samo po indeksu. To pomeni, da mora uporabnik vsakič, ko želi najti najnovejše rezultate, osvežiti indeks.

Dostop do podatkov

Če je uporabnik že delal s PHP in MySQL, mu bo veliko lažje. V nasprotnem primeru bi se verjetno moral naučiti PHP in MySQL.

Iskalnik Sphinx običajno vrne identifikatorje MySQL in ne podatkov.

Najpomembnejša stvar, ki si jo je treba zapomniti o Sfinksi, je, da ne pridobiva podatkov. Najprej poišče identifikatorje dokumentov. Sfinga opravlja intenzivni del, ki išče določene zapise. Nato lahko uporabnik prek sistema MySQL izvede preprost del, ki pridobi dokument. Če na primer Sfinx iz indeksa pridobi ID dokumentov 1, 5 in 7, bo moral za pridobitev zapisov (verjetno z ID 1,5 in 7) poizvedovati po MySQL. Morda se vam zdi, da je to primitivno, vendar MySQL potrebuje zelo malo virov za iskanje identifikatorjev dokumentov v primerjavi z iskanjem besede.

Primer. Recimo, da Sfinga izvleče dokumente z ID 1, 5, 7 (SELECT * FROM documents WHERE id IN (1,5,7)).

Poročila uporabnikov MySQL, kaj je potrebno izberite vse stolpce iz tabele dokumentov (ali katere koli druge tabele, v kateri je bil rezultat), kjer je id (ali kako se je imenovalo njegovo polje) 1, 5 ali 7. Nato lahko v PHP uporabite mysql_fetch_array, da si ogledate podatke in z njimi naredite, kar želite.

Ko ste v Sfinksi osvojili urejanje rezultatov, lahko vrstni red shranite na naslednji način:

  1. Vrstni red rezultatov shranite v polju (shranite samo lastnost id za zadetke).
  2. Izvajanje IMPLODE za polje z uporabo $result = implode(",", $array), kjer je $array polje rezultatov uporabnikov. Rezultat bo shranil niz identifikatorjev rezultatov, ločenih z vejico. - SELECT * FROM documents WHERE id IN ($result) ORDER BY FIELD(id,$result).

Tu uporabnik pove MySQL, naj razvrsti rezultate po polju id v vrstnem redu, ki ga določa $result.

Morda se zdi zapleteno, vendar se ga hitro navadite in kmalu bo uporabnik napisal lastne funkcije, ki bodo vse to urejale namesto njega.

iskalnik

Končne ugotovitve

Uporaba rešitve Sphinx namesto MySQL lahko zagotovi znatne prednosti glede hitrosti. Sfinga je idealna za iskanje statičnih tabel. Hkrati pa ni možnosti uporabe preprostih indeksnih datotek za pogosto posodobljene nize. Namesto tega morate uporabiti delta datoteke ali indeksiranje v realnem času. Obe rešitvi povzročata dodatne stroške delovanja. Za zaključek: za učinkovitejše delo s Sfinxom je treba načrtovati, saj mora imeti uporabnik vnaprej nameščene vse potrebne vire in indeksne datoteke.

Zamenjava sfinge za MySQL ni trivialna, vendar se ji ni tako težko odpovedati. Če je potrebna visoka hitrost iskanja, razmislite o prehodu iz MySQL na Sphinx, tudi če uporabnik ne potrebuje iskanja po celotnem besedilu.

Članki na tem področju