Vyhledávání jinak - zkuste Algolii

Než hledat naivně, to možná raději vůbec...:)

13. 1. 2017 | #php #development #nette

Vyhledávání na webu, v eshopu, kdekoliv, je důležitou součástí každého webu. Samotného mě dokáže naštvat, když vyhledávání nefunguje tak, jak bych si představoval a místo mým přítelem se stane mým nepřítelem.

Je až s podivem, kolik webů dnes stále používá nějaký naivní způsob vyhledávání.

V zásadě jde často o to, že při vložení vyhledávacího dotazu do formuláře se zavolá nějaký SELECT, kde se přes LIKE vyhledává záznam se shodným podřetězcem. Každopádně tahle metoda je dost naivní a neumožňuje spoustu věci, neřeší problémy s tím, že uživatelé píšou třeba bez diakritiky, dělají překlepy a další aspekty jazyka uživatele. Zároveň je dost komplikované řešit, pokud hledáte podvýraz třeba v názvu produktu a v jeho popisu a upřednostnit pak ten výsledek, který má lepší relevanci.

Ono relevance je obecně důležitá věc – vidíme to pořád a je to alfa omega největších vyhledávačů. To samé platí pro největší eshopy a jiné služby, které to myslí s prožitkem svých uživatelů při použití jejich služby vážně.

Jak to řešit?

Vyhledávání lze řešit, jak už jsem psal, naivně nebo lépe sofistikované. Když to myslíte vážně, použijete pravděpodobně ElasticSearch, který lze použít nejen pro účely vyhledávání. Ten ale dnes zmiňovat nechci, spíš bych chtěl zmínit i jinou alternativu. A teď konečně k té Algolii z titulku.

Co je to ta Algolia?

Algolia je zahraniční služba, která má vlastně jen jeden cíl, dělat dobře vyhledávání a pomáhat s tím, aby jste ho dobře dělali. V zásadě jde o to, že do Algolie nahrajete záznamy, typický třeba feed článků, produktů, …, které se spravují v indexu (tak se označuje struktura, co záznamy spravuje). Nad indexem si pak naklikáte pravidla, jakým způsobem se mají výskyty výrazu v jednotlivých atributech upřednostnit, tj. jakou mají mít váhu, podle jaké priority se mají záznamy řadit a to je vlastně v základu vše. Existuje tam pak i řada pokročilejších nastavení jako, kolik překlepů má ve výrazů Algolia ignorovat, jak citlivá má být apod.

Pak už jen skrze API posíláte vyhledávací dotazy do svého indexu v Algolii a vracíte uživateli výsledky. Data můžete nahrávat manuálně nebo přes API. Algolia disponuje řadou knihoven, pro různé platformy, takže napojení je vcelku pohodlné. Vše je dobře zdokumentované, takže by neměl být žádný problém.

Mé zkušenosti

Použil jsem Algolii v několika projektech a ušetřilo nám to spoustu trápení. Na Tipli.cz to kupříkladu používáme pro vyhledávání obchodů. Posíláme do Algolie data, upravujeme ranking v administraci a výsledky pak jen vypisujeme. Nic víc vlastně nemusíme řešit, pingy na jejich servery jsou dostatečně rychlé a lze si vybrat nejbližší oblast, kde se servery nachází. Ted je to tuším Německo.

Zároveň doporučují používat analytiku od Algolie, která dost dobře reflektuje, co lidé hledají a najdou a naopak co lidé u vás hledají, ale najít nemohou. Lze tak podle toho optimalizovat nejen strategii pro hledání, ale také třeba samotnou produktovou nabídku.

Kolik to stojí?

Algolia disponuje free tarifem a poté placenými. V zásadě pro menší web stačí free varianta, pro větší aplikaci je vhodné si pak připlatit. Nejnižší placený tarif je $49 měsíčně.

Použití v Nette

Algolia má balíček i pro PHP. Nějakou dobu zpátky jsem vytvořil jednoduchý balíček, co umožní vložit konfiguraci přes config v Nette. balíček se pak stal oficiálním extension v repozitáři Algolie.

Balíček najdete zde.

Závěr

S Algolii mám dobře zkušenosti a nechci polemizovat nad tím, kdy je vhodné ji použít oproti ElasticSearch apod. Oba řešení mají své místo a záleží jen na vašem případu užití a chuti, které řešení zvolíte. Každopádně na čem se shodneme asi všichni je skutečnost, že nerelevantní vyhledávání je zlo.

Jaké máte vy zkušenosti s vyhledáváním? Klidně se podělte o své zkušenosti.

Odkazy na závěr

Algolia web
Extension pro Nette
PHP knihovna
Dokumentace pro PHP

Použití na VimVic.cz
Použití na Tipli.cz

Diskuse

comments powered by Disqus

Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace