Vyhledávač sphinx: hlavní funkce, aplikace

V dnešní době je nepravděpodobné, že by někdo chtěl vybrat položky v internetovém obchodě, kde by měl rozumět kategoriím nebo procházet dlouhými seznamy položek.

Existuje mnoho dostupných nástrojů, díky nimž je interní vyhledávání na webu rychlé, intuitivní a přizpůsobené jakýmkoli potřebám zákazníků.

vyhledávač Shpinx

Zdá se, že vyhledávací stroj Sphinx slibuje právě to. Fulltextový vyhledávač je flexibilní a rychlý.

Sphinx funguje jako samostatný server a neukládá text pro sebe. Vytváří index založený na dotazu SQL, který extrahuje dokumenty z databáze, ukládá indexy a v pozdější fázi vrací řádky odpovídající dotazu.

hledání informací

Co je Sphinx

Vyhledávač Sphinx je fulltextový vyhledávač, který je zdarma, rychlý a škálovatelný. Je určen pro výkon a relevanci. Nemá obdoby v žádné tradiční databázi.

Velké množství známých webů s vysokým provozem se na něj spoléhá pro pokročilé vyhledávání a škálovatelnost

Klíčové vlastnosti Sphinx

Sphinx pomáhá začlenit a přidat hodnotu vyhledávání a škálovatelnosti díky následujícím vlastnostem, díky nimž je oblíbený u tisíců vývojářů a prodejců elektronického obchodování.

  1. Vysoká rychlost vyhledávání (až 150-250 MB/s na jádru s 1 000 000 dokumenty).
  2. Podpora distribuovaného vyhledávání v reálném čase.
  3. Vysoká rychlost indexování (až 10-15 Mb / s na jádro).
  4. Vysoká škálovatelnost (největší ze známých klastrů je schopen indexovat až 3 000 000 000 dokumentů a dokáže zpracovat více než 50 milionů dotazů denně).
  5. Podpora více polí současně (až 32 ve výchozím nastavení) pro fulltextové vyhledávání dokumentů.
  6. Schopnost udržovat řadu dalších atributů pro každý dokument (např. d.).
  7. Použití stop slov.
  8. Podpora různých API programovací jazyk (například pro PHP, Python, Java, Perl, Ruby, .NET A C ++ a t. d.).
  9. Schopnost zpracovat jak jednobajtové kódování, tak UTF-8.
  10. Morfologické vyhledávání.
  11. Integrace s nejoblíbenějšími systémy správy databází (např

Celkově má vyhledávač Sphinx více než 50 různých funkcí (a toto číslo neustále roste).

hledání informací

Jak funguje Sphinx

Celá složitost pracovního schématu vyhledávače je shrnuta ve 2 klíčových bodech:

  • pomocí zdrojové tabulky vytvoří Sphinx vlastní databázi indexů;
  • poté, když uživatel odešle požadavek API, Sphinx vrátí řadu ID, která odpovídají ID v původní tabulce.

Proč používat Sphinx

Hlavním důvodem jeho použití je rychlost vyhledávání. Normální vyhledávání uživatelů v MySQL trvá podstatně déle než vyhledávání v Sphinxu. Uživatel si začne všimnout rozdílu, jakmile jeho databáze bude mít miliony záznamů. Pokud je databáze malá (např. I když můžete zkusit. Navíc existují zajímavé funkce, jako je morfologie slova (pokud uživatel hledá kočky, bude to odpovídat kočce, pokud hledá běh, bude to odpovídat běhu, běhu atd.). d.).

Dalším důvodem je fulltextové vyhledávání. Přemýšlel někdo, že při hledání dvou slov na Googlu je vyhledá ve stejném odstavci nebo ve dvou odstavcích( nebo větě), ale ne na celé stránce? Sphinx vám umožňuje dělat podobné věci.

vyhledávač

Škálovatelnost je následující. Pokud má uživatel na mnoha serverech velké databáze, postará se o to Sphinx. A aplikace bude předpokládat, že běží na stejném serveru. Sphinx může odstranit většinu zátěže ze serverů PHP, pokud jde o zpracování a vyhledávání informací.

Sphinx se trochu liší od toho, na co je uživatel zvyklý s dotazy MySQL. Takže neočekávejte, že dostanete všechno okamžitě.

Co je indexování

Sphinx načte data z tabulky v databázi MySQL a provede pro ně proces zvaný indexování. Indexování vytvoří soubor, který lze snadno najít pomocí Sphinx. Pokud se například uživatel pokusí najít dokument v aplikaci Microsoft Word, vyhledá slova jeden po druhém v textu dokumentu. Ve velmi velkých dokumentech může být vyhledávání velmi pomalé. Na druhou stranu Sphinx indexuje před provedením jakýchkoli vyhledávání. Tím se vytvoří index, který lze efektivně vyhledávat, nikoli hledat slovo po slově v celém dokumentu. Dobrým příkladem je index encyklopedie. Pokud chce uživatel najít informace o kočkách, mohl by udělat totéž jako Microsoft Word a přečíst si každou stránku encyklopedie při hledání vzhledu slova"kočka". Nebo se může podívat na abecední index na konci knihy, kde je napsáno, že informace o kočkách jsou zveřejněny na stranách 104, 195 a 653. Tak mnohem jednodušší.

Shpinx vyhledávač

Lze hledat pouze to, co je indexováno

Co je třeba pamatovat, je, že Sphinx může hledat pouze v indexu. To znamená Pokaždé, když uživatel chce najít nejnovější výsledky, musí aktualizovat index.

Přístup k datům

Pokud uživatel již pracoval s PHP s MySQL, bude to pro něj mnohem jednodušší. Jinak by se pravděpodobně měl naučit PHP a MySQL.

Vyhledávač Sphinx obvykle vrací ID MySQL, nikoli data.

Hlavní věcí na Sphinx je, že neobnovuje data. Nejprve získá ID dokumentů. Sphinx dělá intenzivní část, která hledá konkrétní záznamy. Uživatel pak může provést jednoduchou část přes MySQL, který obdrží tento dokument. Například pokud Sphinx načte ID dokumentů 1, 5 a 7 z indexu, bude nutné provést dotaz v MySQL, abyste získali záznamy (pravděpodobně s ID 1,5 a 7). Dalo by se to považovat za primitivní, ale MySQL vyžaduje jen velmi málo zdrojů k nalezení ID dokumentu ve srovnání s vyhledáváním slov.

Příklad. Řekněme, že Sphinx vytáhne dokumenty s ID 1, 5, 7 (SELECT * FROM documents where id in (1,5,7)).

Uživatel hlásí MySQL, co potřebujete vybrat všechny sloupce z tabulky dokumentů (nebo jakékoli jiné, ve které byl výsledek), kde ID (nebo to, co bylo pojmenováno jeho polem) je 1, 5 nebo 7. A pak můžete použít mysql_fetch_array v PHP, abyste se podívali na data a udělali s nimi cokoli.

Po zvládnutí práce v Sphinxu pro uspořádání výsledků je možné uložit pořadí následujícím způsobem:

  1. Uložení pořadí výsledků v poli (stačí uložit vlastnost id pro shody).
  2. Provádění IMPLODE pro pole pomocí $result = implode(",", $array), kde $array je pole výsledků uživatele. Výsledek uloží řetězec ID výsledků oddělených čárkou. · SELECT * FROM documents WHERE id IN ($result) ORDER BY FIELD(id,$result).

Zde uživatel řekne MySQL, že je nutné uspořádat výsledky podle pole id v pořadí uvedeném v $result.

Může to znít komplikovaně, ale rychle si na to zvyknete a brzy uživatel sám napíše funkce, které to pro něj zvládnou.

vyhledávač

Závěrečná zjištění

Použití Sphinx místo MySQL může poskytnout významné výhody rychlosti. Sphinx je ideální pro vyhledávání statických tabulek. U často aktualizovaných řádků však chybí možnost použití jednoduchých indexových souborů. Místo toho musíte buď vložit soubory Delta, nebo přejít na indexování v reálném čase. Obě řešení přinášejí dodatečné náklady na produktivitu. A na závěr: pro efektivnější práci v Sphinxu je nutné plánování, protože uživatel musí předem nastavit všechny potřebné zdroje a indexové soubory.

Výměna Sphinx za MySQL není triviální, ale není tak obtížná, aby se této možnosti vzdala. Pokud je nutná vysoká rychlost vyhledávání, měli byste zvážit přechod z MySQL na Sphinx, i když uživatel nepotřebuje fulltextové vyhledávání.

Články na téma