Sphinx keresőmotor: főbb jellemzők, alkalmazás

Manapság alig akar valaki olyan termékeket választani egy online áruházban, ahol kategóriákat kell rendezni, vagy hosszú terméklistákat kell görgetnie.

Számos olyan eszköz áll rendelkezésre, amelyek gyors, intuitív és az ügyfelek igényeihez igazítható belső webhelykeresést tesznek lehetővé.

. Shpinx keresőmotor

Úgy tűnik, hogy a Szfinx keresőmotor csak ezt ígéri. A teljes szövegű keresőmotor rugalmas és gyors.

A Sphinx önálló szerverként működik, és nem tárol szöveget magának. Egy SQL lekérdezésen alapuló indexet hoz létre, amely beolvassa a dokumentumokat az adatbázisból, indexeket tárol, majd egy későbbi szakaszban a lekérdezésnek megfelelő sorokat ad vissza.

információ keresés

Mi a Szfinx

A Sphinx keresőmotor teljes szövegű keresőmotor, ami ingyenes, gyors és skálázható. Úgy tervezték, a teljesítmény és a relevancia. Nincs analógja egyetlen hagyományos adatbázisban sem.

, számos jól ismert, nagy forgalmú webhely támaszkodik rá a fejlett keresési és skálázhatósági szint érdekében

A Szfinx főbb jellemzői

A Sphinx lehetővé teszi és növeli a keresés és a skálázhatóság értékét a következő jellemzőkkel, amelyek népszerűvé teszik az e-kereskedelmi fejlesztők és eladók ezrei között.

  1. Nagy keresési sebesség (akár 150-250 Mbps egy magon 1 000 000 dokumentummal).
  2. Az elosztott valós idejű keresés támogatása.
  3. Magas indexelési sebesség (akár 10-15 Mbit/s magonként).
  4. Magas skálázhatóság (a legnagyobb az ismert klaszter akár 3 000 000 000 dokumentum indexelésére is képes, és naponta több mint 50 millió kérést képes feldolgozni).
  5. Több mező egyidejű támogatása (alapértelmezés szerint legfeljebb 32) a teljes szövegű dokumentumkereséshez.
  6. Az egyes dokumentumok számos további attribútumának támogatása (például csoportok, időbélyegzők stb. e.).
  7. Stop szavak használata.
  8. Különböző API-k támogatása programozási nyelvek (például PHP, Python, Java, Perl, Ruby esetén, .NET és C++,. stb..).
  9. Mind az egybájtos kódolások, mind az UTF-8 feldolgozásának képessége.
  10. Morfológiai keresés.
  11. Integráció a legnépszerűbb adatbázis-kezelő rendszerekkel (pl. MySQL, PostgreSQL)

Általánosságban elmondható, hogy a Sphinx keresőmotor több mint 50 különböző funkcióval rendelkezik (és ez a szám folyamatosan növekszik).

információ keresés

Hogyan Működik A Szfinx

A keresőmotor munkarendjének teljes összetettségét 2 kulcsfontosságú pont foglalja össze:

  • az eredeti táblázat segítségével a Sphinx létrehozza saját index-adatbázisát;
  • Ezután, amikor a felhasználó API-kérést küld, a Sphinx egy sor azonosítót ad vissza, amelyek megfelelnek a forrástábla azonosítóinak.

Miért használja a szfinxet

A fő ok, amiért érdemes használni, a keresési sebesség. A normál felhasználói keresések a MySQL-ben lényegesen hosszabb ideig tartanak, mint a Sphinx-ben végzett keresés. A felhasználó elkezdi észrevenni a különbséget, amint adatbázisa több millió rekordot tartalmaz. Ha az adatbázis kicsi (például egy 100 felhasználóból álló fórum), akkor ez nem pontosan az, amire szüksége van. Bár meg lehet próbálni. Plusz vannak olyan érdekes funkciók, mint például a szó morfológiája (ha a felhasználó macskákat keres, akkor meg fog egyezni a macskával, ha futást keres, akkor meg fog egyezni a futással, futással,. stb..).

Egy másik ok a teljes szöveges keresés. Gondolt már valaki arra, hogy miközben két szót keres a Google-ban, ugyanabban a bekezdésben vagy két bekezdésben (vagy mondatban) keresi őket, de nem az egész oldalon? A Szfinx lehetővé teszi hasonló dolgok elvégzését is.

keresőmotor

A skálázhatóság a következő. Ha a felhasználónak nagy adatbázisai vannak sok szerveren, a Sphinx gondoskodik erről. Az alkalmazás feltételezi, hogy ugyanazon a szerveren fut. A Sphinx a PHP szerverek terhelésének nagy részét le tudja venni az információk feldolgozása és keresése szempontjából.

A Sphinx kissé eltér attól, amit a felhasználó a MySQL lekérdezésekkel szokott használni. Tehát ne számíts arra, hogy mindent azonnal megkapsz.

Mi az indexelés?

A Sphinx kivonja az adatokat egy MySQL adatbázisban lévő táblázatból, és végrehajtja az indexelésnek nevezett folyamatot. Az indexelés létrehoz egy fájlt, amely könnyen megtalálható a Sphinx segítségével. Például, ha egy felhasználó megpróbál egy dokumentumot megtalálni a Microsoft Word programban, akkor egyenként keres szavakat a dokumentum szövegében. Nagyon nagy dokumentumokban a keresés nagyon lassú lehet. Másrészt a Sphinx indexelést végez, mielőtt bármilyen keresést végezne. Ez létrehoz egy indexet, amely hatékonyan kereshető, ahelyett, hogy szóról szóra keresne a dokumentumban. Jó példa erre az encyclopedia index. Ha egy felhasználó információt szeretne találni a macskákról, akkor ugyanazt teheti, mint a Microsoft Word, és elolvashatja az enciklopédia minden oldalát, hogy megkeresse a "macska"szó megjelenését. Vagy megnézheti a könyv végén található betűrendes indexet, ahol meg van írva, hogy a macskákról szóló információkat a 104., 195. és 653. oldalon teszik közzé. Ez sokkal könnyebb így.

Shpinx keresőmotor

Csak akkor lehet keresni, amit indexelt

Emlékeztetni kell arra, hogy a Szfinx csak az indexben kereshet. Ez azt jelenti, hogy minden alkalommal, amikor a felhasználó meg akarja találni a legfrissebb eredményeket, frissítenie kell az indexet.

Adathozzáférés

Ha a felhasználó már dolgozott a PHP-vel a MySQL-vel, sokkal könnyebb lesz neki. Ellenkező esetben valószínűleg meg kell tanulnia a PHP-t és a MySQL-t.

A Sphinx keresőmotor általában MySQL azonosítókat ad vissza, nem adatokat.

A legfontosabb dolog, hogy emlékezzen a szfinxre, hogy nem von ki adatokat. Először is megkapja a dokumentumok azonosítóit. A Sphinx elvégzi az intenzív részt, amely konkrét rekordokat keres. A felhasználó ezután végrehajthatja az egyszerű részt a MySQL-en keresztül, amely megkapja ezt a dokumentumot. Így például, ha a Sphinx kivonja az 1., 5. és 7. dokumentumazonosítót az indexből, akkor lekérdezést kell futtatnia a MySQL-ben, hogy rekordokat kapjon (valószínűleg az 1.5 és 7 azonosítókkal). Azt gondolhatja, hogy ez primitív, de a MySQL nagyon kevés erőforrást igényel a dokumentumazonosító kereséséhez a word search-hez képest.

Példa. Tegyük fel, hogy a Szfinx kihúzza az 1, 5, 7 azonosítóval rendelkező dokumentumokat ( válasszon * a dokumentumok közül, ahol az azonosító (1,5,7)).

A felhasználó elmondja a MySQL-nek, hogy szükséges az összes oszlop kiválasztása a dokumentumtáblából (vagy bármely más, amelyben az eredmény volt), ahol az azonosító (vagy az úgynevezett mező) egyenlő 1, 5 vagy 7. És akkor a MYSQL_FETCH_ARRAY PHP-ben, hogy nézd meg az adatokat, és azt csinálsz vele, amit akarsz.

Miután elsajátította a Sphinx munkáját az eredmények megszervezéséhez, a sorrendet az alábbiak szerint mentheti:

  1. Az eredmények sorrendjének mentése a tömbben (csak mentse el az id tulajdonságot a mérkőzésekhez).
  2. Implode végrehajtása egy tömbön $result = implode (",", $array), ahol $array a felhasználói eredmények tömbje. Az eredmény egy sor eredményazonosítót fog tárolni vesszővel elválasztva. * Válassza ki * a dokumentumok, ahol id ($eredmény) rendezés mező(id,$eredmény).

Itt a felhasználó tájékoztatja a MySQL-t, hogy az eredményeket id mező szerint kell megrendelni a $result-ban megadott sorrendben.

Bonyolultnak tűnhet, de gyorsan megszokja, és hamarosan maga a Felhasználó olyan funkciókat fog írni, amelyek mindezt megbirkóznak vele.

keresőmotor

Végső következtetések

A Sphinx használata a MySQL helyett jelentős sebesség-előnyökkel járhat. A Sphinx ideális statikus táblázatok keresésére. Ugyanakkor nincs lehetőség egyszerű indexfájlok használatára a gyakran frissített sorokhoz. Ehelyett vagy delta fájlokat kell végrehajtania, vagy valós idejű indexelésre kell váltania. , mindkét megoldás további teljesítményköltségekkel jár. Összefoglalva: a Szfinx hatékonyabb munkájához tervezésre van szükség, mivel a felhasználónak előzetesen telepítenie kell az összes szükséges forrást és indexfájlt.

A Sphinx cseréje a MySQL számára nem triviális, de nem is olyan nehéz feladni ezt a funkciót. Ha nagy Keresési sebességre van szüksége, akkor gondoljon a MySQL-ről a szfinxre való váltásra, még akkor is, ha a felhasználónak nincs szüksége teljes szöveges keresésre.

Cikkek a témában