Dobrý magazín žije svými příběhy. Technologie v jeho pozadí ale ovlivňuje, jak snadno se k nim dostanete a zda objevíte další článek, který vás zaujme. Při tvorbě nového jsme.cz jsme proto věnovali pozornost také tomu, co na první pohled není vidět: způsobu, jakým ukládáme, propojujeme a zpřístupňujeme obsah.
Databáze pro propojený obsah
Naším datovým základem se stala Relatude.DB, otevřená databáze pro C# a .NET, která spojuje objektový a grafový model s integrovaným vyhledáváním. Za jejím vývojem stojí norská společnost Proventus AS, tvůrce platforem Relatude CMS a Relatude E-commerce. Databáze tak navazuje na zkušenosti se správou obsahu a vývojem webových aplikací. Více o společnosti
Článek má své autory, rubriku, tematické štítky a vazby na další texty. Relatude.DB pracuje s těmito vztahy přímo jako se součástí databázového modelu. Na jsme.cz tento základ využíváme k propojení obsahu, aby čtenáři mohli pokračovat podle tématu, které je zajímá, nebo objevovat další tvorbu oblíbeného autora.
S každým dalším článkem roste také hodnota souvislostí mezi příběhy.
Přímější cesta k datům
Databázový engine běží přímo v našem aplikačním backendu, takže jeho přístup k datům nevyžaduje síťovou komunikaci se samostatným databázovým serverem. Pro tuto datovou vrstvu nepotřebujeme SQL Server ani Entity Framework, což zjednodušuje její provoz.
Rychlost webu vzniká spoluprací všech jeho částí. Relatude.DB proto doplňuje serverové vykreslování stránek, mezipaměť pro vybrané veřejné odpovědi API a vlastní zpracování obrazových variant. Společně omezují zbytečně opakovanou práci při procházení magazínu.
Vyhledávání ve společném úložišti
S rostoucím archivem nabývá na významu vyhledávání. Využíváme nativní fulltextové hledání Relatude.DB s hodnocením relevance BM25. Nadpisům přikládáme vyšší váhu a podporujeme hledání podle začátků slov. Vyhledávací index zůstává ve stejném databázovém úložišti jako ostatní obsah a aktualizuje se na pozadí po uložení změn.
To pomáhá čtenářům i redakci dohledávat starší materiály a propojovat je s novými texty. Veřejné vyhledávání zároveň kontroluje aktuální publikační stav, aby nabízelo pouze obsah určený čtenářům.
Vektorové a sémantické hledání
Relatude.DB nabízí také vektorové indexování a sémantické vyhledávání. Text lze reprezentovat pomocí číselných vektorů, které umožňují hledat podle významové podobnosti. Čtenář tak může objevit související článek, i když autor použil jiná slova než on ve svém dotazu.
Hledání podle významu může propojit příběhy, které samotná shoda slov neodhalí.
Databáze podporuje také hybridní hledání, které kombinuje fulltext s vektorovou podobností. Tyto možnosti nabízí v rámci jedné platformy, takže pro ně není nutné provozovat samostatnou vektorovou databázi. Vyžadují však nastavení tvorby vektorových reprezentací textu a sémantického indexování.
Na jsme.cz dnes používáme fulltextové hledání. Sémantické vyhledávání představuje možnost dalšího rozvoje, například pro objevování tematicky blízkých článků. Relatude.DB nabízí i další nástroje, včetně fasetového filtrování, geografických dotazů a procházení grafových vztahů. Přehled možností Relatude.DB
Přehlednější vývoj a společné ukládání změn
Relatude.DB umožňuje definovat nativní datový model pomocí typů a rozhraní jazyka C#. Struktura obsahu tak zůstává blízko kódu, který s ní pracuje. Silné typování pomáhá zachytit nesrovnalosti při sestavení aplikace a usnadňuje její údržbu.
Důležitá je také spolehlivost ukládání. Úprava článku může zahrnovat odstavce, autory, štítky i odkazy. Naše aplikace ukládá související databázové změny v jedné transakci, aby se provedly společně a při selhání nezůstala uložená pouze jejich část. Samotné nahrané soubory spravuje backend odděleně; databáze uchovává jejich metadata a vazby.
Otevřený základ pro další příběhy
Relatude.DB má veřejně dostupný zdrojový kód pod licencí MIT a umožňuje provoz ve vlastním prostředí. Můžeme tak lépe porozumět technologii, na které magazín stojí, a rozhodovat o jejím provozu i uložených datech. Zdrojový kód a licence
Nové jsme.cz už na tomto základu stojí. Jeho přínos chceme proměňovat v pohodlnější objevování příběhů a souvislostí — aby vás zajímavý článek přivedl k dalšímu a vy měli chuť pokračovat.