Sphinx pretraživač: glavne karakteristike, aplikacija

Danas retko ko želi da bira proizvode u online prodavnici gde treba da sredite kategorije ili skrolujete kroz dugačke liste proizvoda.

Na raspolaganju su mnogi alati koji mogu brzo, intuitivno i prilagoditi potrebama korisnika internim pretraživanjem sajta.

. Shpinx pretraživač

Čini se da pretraživač Sphinx obećava upravo to. Pretraživač sa punim tekstom je i fleksibilan i brz.

Sphinx radi kao samostalni server i ne čuva tekst za sebe. Kreira indeks zasnovan na SQL upitu koji izdvaja dokumente iz baze podataka, čuva indekse, a u kasnijoj fazi vraća odgovarajuće redove.

na upit za pretragu informacija

Šta je Sfinga

Pretraživač Sfinga je ceo tekst pretraživač, koji je slobodan, brz i skalabilan. Dizajniran je za performanse i relevantnost. Nema analoga ni u jednoj tradicionalnoj bazi podataka.

Veliki broj poznatih sajtova sa velikim prometom oslanja se na njega za napredan nivo pretraživanja i skalabilnosti

Glavne karakteristike Sfinga

Sphinx pomaže omogućiti i povećati vrijednost pretraživanja i skalabilnosti kroz sljedeće karakteristike koje ga čine popularnim među hiljadama programera i prodavaca e-trgovine.

  1. Velika brzina pretrage (do 150-250 Mbps na jezgru sa 1.000.000 dokumenata).
  2. Podrška za distribuiranu pretragu u realnom vremenu.
  3. Visoka brzina indeksiranja (do 10-15 Mbps po jezgru).
  4. Visoka skalabilnost (najveći od poznatih klastera može indeksirati do 3.000.000.000 dokumenata i može obraditi više od 50 miliona zahtjeva dnevno).
  5. Istovremena podrška za više polja (podrazumevano do 32) za pretragu dokumenata u punom tekstu.
  6. Mogućnost podrške brojnih dodatnih atributa za svaki dokument (na primjer, grupe, vremenske oznake,. itd..).
  7. Upotreba zaustavnih riječi.
  8. Podrška za različite API-je programski jezici (na primjer, za PHP, Python, Java, Perl, Ruby, .NET i C++,. itd..).
  9. Mogućnost obrade i jednobajtnih kodiranja i UTF-8.
  10. Morfološka pretraga.
  11. Integracija sa najpopularnijim sistemima za upravljanje bazama podataka(npr

Općenito, pretraživač Sphinx ima više od 50 različitih funkcija (a ovaj broj stalno raste).

traži informacije

Kako Funkcioniše Sfinga

Cijela složenost radne sheme pretraživača sažeta je u 2 ključne tačke:

  • koristeći originalnu tabelu, Sphinx kreira sopstvenu bazu podataka indeksa;
  • Zatim, kada korisnik podnese zahtjev za API, Sphinx vraća niz ID-ova koji odgovaraju ID-ovima u izvornoj tablici.

Zašto koristiti Sphinx

Glavni razlog zašto biste ga trebali koristiti je brzina pretrage. Normalne pretrage korisnika u MySQL-u traju znatno duže od pretrage u Sphinxu. Korisnik počinje primjećivati razliku čim njegova baza podataka ima milione zapisa. Ako je baza podataka mala (na primer, forum korisnika 100-a), to nije baš ono što vam treba. Iako možete pokušati. Osim toga, postoje zanimljive karakteristike kao što je morfologija riječi (ako korisnik traži mačke, ona će odgovarati mački, ako traži trčanje, odgovaraće trčanju, trčanju,. itd..).

Drugi razlog je traženje cijelog teksta. Da li je neko ikada pomislio da će, dok traže dve reči u Google-u, tražiti ih u istom pasusu ili u dva pasusa (ili u rečenici), ali ne na celoj stranici? Sfinga vam takođe omogućava da radite slične stvari.

pretraživač

Skalabilnost je sledeća. Ako korisnik ima velike baze podataka na mnogim serverima, Sphinx će se pobrinuti za ovo. A aplikacija će pretpostaviti da radi na istom serveru. Sphinx može uzeti većinu opterećenja sa PHP servera u smislu obrade i traženja informacija.

Sphinx se malo razlikuje od onoga na šta je korisnik navikao sa MySQL upitima. Zato ne očekujte da ćete sve dobiti odmah.

Šta je indeksiranje?

Sphinx izvlači podatke iz tabele u MySQL bazi podataka i izvodi proces koji se za njih naziva indeksiranje. Indeksiranje stvara fajl koji se lako može pronaći pomoću Sfinge. Na primjer, ako korisnik pokuša pronaći dokument u programu Microsoft Word, tražit će riječi jednu po jednu u tekstu dokumenta. U veoma velikim dokumentima, potraga može biti veoma spora. S druge strane, Sphinx vrši indeksiranje prije obavljanja bilo kakvih pretraga. Ovo stvara indeks koji se može efikasno pretraživati, umjesto da pretražuje riječ po riječ u cijelom dokumentu. Dobar primer je indeks enciklopedije. Ako korisnik želi pronaći informacije o mačkama, mogao bi učiniti isto kao i Microsoft Word i pročitati svaku stranicu enciklopedije u potrazi za izgledom riječi "mačka". Ili može pogledati abecedni indeks na kraju knjige, gdje piše da su informacije o mačkama dostupne na stranicama 104, 195 i 653. Ovako je mnogo lakše.

Shpinx pretraživač

Možete tražiti samo ono što je indeksirano

Ono što treba zapamtiti je da Sphinx može samo da traži u indeksu. To znači da svaki put kada korisnik želi pronaći najnovije rezultate, mora ažurirati indeks.

Pristup podacima

Ako je korisnik već radio sa PHP-om sa MySQL-om, biće mu mnogo lakše. U suprotnom, verovatno bi trebalo da nauči PHP i MySQL.

Pretraživač Sphinx obično vraća MySQL ID-ove, a ne podatke.

Glavna stvar za pamćenje o Sfingu je da ne izvlači podatke. Prije svega, on dobija lične karte dokumenata. Sphinx čini intenzivni dio koji traži određene zapise. Korisnik tada može izvršiti jednostavan deo preko MySQL - a, koji prima ovaj dokument. Tako, na primjer, ako Sphinx izvlači ID-ove dokumenata 1, 5 i 7 iz indeksa, tada ćete morati pokrenuti upit u MySQL-u da biste dobili zapise (vjerovatno sa ID-ovima 1.5 i 7). Možda mislite da je ovo primitivno, ali MySQL zahtijeva vrlo malo resursa za traženje ID dokumenta u poređenju sa pretraživanjem riječi.

Primjer. Recimo Sphinx izvlači dokumente sa IDs 1, 5, 7 (izabrati * od dokumenata gdje id u (1,5,7)).

Korisnik kaže za MySQL, da je neophodno za odabir svih kolona iz tabele dokumenata (ili bilo koje druge u kojoj je rezultat bio), gdje je identifikator (ili ono što se zvalo njegovo polje) jednak 1, 5 ili 7. A onda možete koristiti mysql_fetch_array u PHP-u kako biste pogledali podatke i radili s njima što god želite.

Nakon što su savladali rad u Sphinx organizirati rezultate, možete sačuvati kako slijedi:

  1. Spremanje redoslijeda rezultata u nizu (samo spremite svojstvo id za utakmice).
  2. Izvršavanje IMPLODE na nizu koristeći $rezultat = implode(",", $array), gdje je $array niz korisničkih rezultata. Rezultat će pohraniti niz ID-ova rezultata odvojenih zarezima. * Izabrati * od dokumenata gdje id u ($rezultat) poredak po polju (id,$rezultat).

Ovdje korisnik obavještava MySQL da je potrebno naručiti rezultate po ID polju redoslijedom navedenim u $ result.

Možda izgleda komplikovano, ali brzo se naviknete, a uskoro će i sam korisnik napisati funkcije koje će se nositi sa svim ovim umjesto njega.

pretraživač

Konačni zaključci

Korišćenje Sphinx umjesto MySQL-a može pružiti značajne prednosti u brzini. Sfinga je idealna za pretraživanje statičkih tabela. Ali u isto vrijeme ne postoji mogućnost korištenja jednostavnih indeksnih datoteka za često ažurirane redove. Umjesto toga, ili morate implementirati delta fajlove, ili preći na indeksiranje u realnom vremenu. , oba rješenja imaju dodatne troškove performansi. I zaključak: za efikasniji rad u Sfingu, planiranje je potrebno, jer korisnik mora unaprijed instalirati sve potrebne izvore i indeksne datoteke.

Zamjena Sfinge za MySQL nije trivijalna, ali također nije tako teško odreći se ove funkcije. Ako vam je potrebna velika brzina pretrage, razmislite o prelasku sa MySQL - a na Sphinx, čak i kada korisniku nije potrebna pretraga u punom tekstu.