Část 1: Nastavení jednoho uzlu
Dnes je elektronické ukládání dokumentů nebo dat na úložném zařízení rychlé a snadné, je také srovnatelně levné. Používá se odkaz na název souboru, který má popisovat, o čem je dokument. Alternativně jsou data uchovávána v systému správy databází (DBMS), jako je PostgreSQL, MariaDB nebo MongoDB, abychom pojmenovali jen několik možností. Několik paměťových médií je buď lokálně, nebo vzdáleně připojeno k počítači, například USB flash disk, interní nebo externí pevný disk, síťové úložiště (NAS), cloudové úložiště nebo založené na GPU / Flash, jako u Nvidia V100 [10].
Naopak reverzní proces, nalezení správných dokumentů ve sbírce dokumentů, je poměrně složitý. Většinou vyžaduje bezchybnou detekci formátu souboru, indexování dokumentu a extrahování klíčových konceptů (klasifikace dokumentu). To je místo, kde přichází rámec Apache Solr. Nabízí praktické rozhraní pro provádění uvedených kroků - vytvoření indexu dokumentu, přijetí vyhledávacích dotazů, skutečné vyhledávání a vrácení výsledku vyhledávání. Apache Solr tak tvoří jádro účinného výzkumu na sile databáze nebo dokumentů.
V tomto článku se dozvíte, jak Apache Solr funguje, jak nastavit jeden uzel, indexovat dokumenty, provádět vyhledávání a načíst výsledek.
Následné články vycházejí z tohoto článku a diskutujeme v nich další, konkrétnější případy použití, jako je integrace PostgreSQL DBMS jako zdroje dat nebo vyvažování zátěže mezi více uzly.
O projektu Apache Solr
Apache Solr je rámec vyhledávače založený na výkonném serveru indexu vyhledávání Lucene [2]. Je napsán v jazyce Java a je udržován pod záštitou Apache Software Foundation (ASF) [6]. Je volně dostupný pod licencí Apache 2.
Téma „Najít dokumenty a data znovu“ hraje ve světě softwaru velmi důležitou roli a mnoho vývojářů se tím intenzivně zabývá. Web Awesomeopensource [4] uvádí více než 150 projektů open-source pro vyhledávače. Počátkem roku 2021 jsou ElasticSearch [8] a Apache Solr / Lucene dva nejlepší psy, pokud jde o hledání větších datových souborů. Vývoj vašeho vyhledávače vyžaduje spoustu znalostí, Frank to dělá s knihovnou AdvaS Advanced Search [3] založenou na Pythonu od roku 2002.
Nastavení Apache Solr:
Instalace a provoz Apache Solr nejsou komplikované, je to prostě celá řada kroků, které musíte provést. Výsledek prvního dotazu na data počkejte asi 1 hodinu. Apache Solr navíc není jen hobby projekt, ale také se používá v profesionálním prostředí. Zvolené prostředí operačního systému je proto navrženo pro dlouhodobé používání.
Jako základní prostředí pro tento článek používáme Debian GNU / Linux 11, což je nadcházející vydání Debianu (počátkem roku 2021) a očekává se, že bude k dispozici v polovině roku 2021. V tomto kurzu očekáváme, že jste jej již nainstalovali, buď jako nativní systém, ve virtuálním počítači, jako je VirtualBox, nebo v kontejneru AWS.
Kromě základních komponent potřebujete v systému nainstalovat následující softwarové balíčky:
- Kučera
- Výchozí-java
- Libcommons-cli-java
- Libxerces2-java
- Libtika-java (knihovna z projektu Apache Tika [11])
Tyto balíčky jsou standardní součástí systému Debian GNU / Linux. Pokud ještě nejsou nainstalované, můžete je po instalaci nainstalovat jako uživatel s právy správce, například root nebo prostřednictvím sudo, jak je znázorněno následovně:
# apt-get install curl default-java libcommons-cli-java libxerces2-java libtika-javaPo přípravě prostředí je druhým krokem instalace Apache Solr. Od této chvíle není Apache Solr k dispozici jako běžný balíček Debianu. Proto je nutné načíst Apache Solr 8.8 ze sekce stahování na webových stránkách projektu [9]. Pomocí níže uvedeného příkazu wget jej uložte do adresáře / tmp ve vašem systému:
$ wget -O / tmp https: // stahování.apache.org / lucene / solr / 8.8.0 / solr-8.8.0.tgzPřepínač -O zkracuje -výstupní dokument a umožňuje wget ukládat načtený tar.soubor gz v daném adresáři. Archiv má velikost zhruba 190 mil. Dále rozbalte archiv do adresáře / opt pomocí tar. Ve výsledku najdete dva podadresáře - / opt / solr a / opt / solr-8.8.0, zatímco / opt / solr je nastaven jako symbolický odkaz na druhý. Apache Solr je dodáván s instalačním skriptem, který spustíte dále, je následující:
# / opt / solr-8.8.0 / bin / install_solr_service.shTo má za následek vytvoření uživatele Linuxu solr běží ve službě Solr plus jeho domovský adresář pod / var / solr vytvoří službu Solr, přidá se s odpovídajícími uzly a spustí službu Solr na portu 8983. Toto jsou výchozí hodnoty. Pokud s nimi nejste spokojeni, můžete je během instalace upravit nebo dokonce promluvit, protože instalační skript přijímá odpovídající přepínače pro úpravy nastavení. Doporučujeme vám podívat se na dokumentaci Apache Solr týkající se těchto parametrů.
Software Solr je uspořádán do následujících adresářů:
- zásobník
obsahuje binární soubory Solr a soubory ke spuštění Solr jako služby - přispět
externí knihovny Solr, jako je obslužný program pro import dat a knihovny Lucene - dist
interní Solr knihovny - dokumenty
odkaz na dokumentaci Solr k dispozici online - příklad
ukázkové datové sady nebo několik případů / scénářů použití - licence
softwarové licence pro různé komponenty Solr - serveru
konfigurační soubory serveru, například server / etc pro služby a porty
Podrobněji si o těchto adresářích můžete přečíst v dokumentaci Apache Solr [12].
Správa Apache Solr:
Apache Solr běží jako služba na pozadí. Můžete jej spustit dvěma způsoby, buď pomocí systemctl (první řádek) jako uživatel s oprávněními správce, nebo přímo z adresáře Solr (druhý řádek). Níže uvádíme seznam obou příkazů terminálu:
# systemctl start solr$ solr / bin / solr start
Zastavení Apache Solr se provádí podobně:
# systemctl stop solr$ solr / bin / solr stop
Stejným způsobem jde o restartování služby Apache Solr:
# systemctl restart solr$ solr / bin / solr restart
Stav procesu Apache Solr lze dále zobrazit takto:
# systemctl status solr$ solr / bin / solr status
Na výstupu je uveden soubor služby, který byl spuštěn, a to jak odpovídající časové razítko, tak zprávy protokolu. Obrázek níže ukazuje, že služba Apache Solr byla spuštěna na portu 8983 s procesem 632. Proces úspěšně běží po dobu 38 minut.
Chcete-li zjistit, zda je proces Apache Solr aktivní, můžete také provést křížovou kontrolu pomocí příkazu ps v kombinaci s grep. To omezuje výstup ps na všechny procesy Apache Solr, které jsou aktuálně aktivní.
# ps ax | grep --color solrObrázek níže to ukazuje pro jeden proces. Uvidíte volání Javy, které je doprovázeno seznamem parametrů, například porty využití paměti (512M) k poslechu na 8983 pro dotazy, 7983 pro požadavky na zastavení a typ připojení (http).
Přidávání uživatelů:
Procesy Apache Solr běží s konkrétním uživatelem jménem solr. Tento uživatel je užitečný při správě procesů Solr, nahrávání dat a odesílání požadavků. Po nastavení nemá uživatel solr heslo a očekává se, že bude mít jedno pro přihlášení, aby mohl pokračovat dále. Nastavit heslo pro uživatele solr jako root uživatele, je zobrazeno následovně:
# passwd solrSpráva solr:
Správa Apache Solr se provádí pomocí panelu Solr. To je přístupné přes webový prohlížeč z http: // localhost: 8983 / solr. Obrázek níže ukazuje hlavní pohled.
Vlevo vidíte hlavní nabídku, která vás vede k podsekcím pro protokolování, správu jader Solr, nastavení Java a stavové informace. Vyberte požadované jádro pomocí výběrového pole pod nabídkou. Na pravé straně nabídky se zobrazí odpovídající informace. Položka nabídky Dashboard zobrazuje další podrobnosti týkající se procesu Apache Solr, stejně jako aktuální zatížení a využití paměti.
Vezměte prosím na vědomí, že obsah řídicího panelu se mění v závislosti na počtu jader Solr a dokumentech, které byly indexovány. Změny ovlivní jak položky nabídky, tak odpovídající informace, které jsou viditelné vpravo.
Princip fungování vyhledávačů:
Jednoduše řečeno, vyhledávače analyzují dokumenty, kategorizují je a umožňují vám provádět vyhledávání na základě jejich kategorizace. V zásadě se proces skládá ze tří fází, které se nazývají procházení, indexování a hodnocení [13].
Plazení je první fáze a popisuje proces, kterým se shromažďuje nový a aktualizovaný obsah. Vyhledávací stroj používá roboty, které jsou také známé jako pavouci nebo prohledávače, a proto prochází dostupné dokumenty pojmem procházení.
Druhá fáze se nazývá indexování. Dříve shromážděný obsah lze prohledávat transformací původních dokumentů do formátu, kterému vyhledávač rozumí. Klíčová slova a koncepty jsou extrahovány a uloženy v (rozsáhlých) databázích.
Třetí fáze se nazývá hodnocení a popisuje proces třídění výsledků vyhledávání podle jejich relevance s vyhledávacím dotazem. Je běžné zobrazovat výsledky v sestupném pořadí, takže výsledek, který má nejvyšší relevanci pro vyhledávací dotaz, je na prvním místě.
Apache Solr funguje podobně jako dříve popsaný třístupňový proces. Stejně jako oblíbený vyhledávač Google, Apache Solr používá posloupnost shromažďování, ukládání a indexování dokumentů z různých zdrojů a zpřístupňuje je / prohledává téměř v reálném čase.
Apache Solr používá různé způsoby indexování dokumentů, včetně následujících [14]:
- Použití obslužné rutiny požadavku na index při nahrávání dokumentů přímo do Solr. Tyto dokumenty by měly být ve formátech JSON, XML / XSLT nebo CSV.
- Použití obslužného programu Extracting Request (Solr Cell). Dokumenty by měly být ve formátu PDF nebo Office, které podporuje Apache Tika.
- Pomocí obslužné rutiny importu dat, která přenáší data z databáze a katalogizuje je pomocí názvů sloupců. Obslužný program pro import dat načte jako zdroje data z e-mailů, kanálů RSS, dat XML, databází a souborů prostého textu.
Při odeslání požadavku na vyhledávání se v Apache Solr používá obslužný program dotazu. Obslužný program dotazu analyzuje daný dotaz na základě stejného konceptu obslužné rutiny indexu, aby odpovídal dotazu a dříve indexovaným dokumentům. Zápasy jsou řazeny podle jejich vhodnosti nebo relevance. Stručný příklad dotazování je uveden níže.
Nahrávání dokumentů:
Z důvodu jednoduchosti použijeme ukázkovou datovou sadu pro následující příklad, který již poskytuje Apache Solr. Nahrávání dokumentů se provádí jako uživatel. Krok 1 je vytvoření jádra s názvem techproducts (pro řadu technologických položek).
$ solr / bin / solr create -c techproducts
Všechno je v pořádku, pokud uvidíte zprávu „Vytvořeno nové jádro 'technologických produktů'“. Krok 2 je přidání dat (data XML z exampledocs) do dříve vytvořených klíčových technologických produktů. Používá se nástrojový příspěvek, který je parametrizován parametrem -c (název jádra) a dokumenty, které se mají nahrát.
$ solr / bin / post -c techproducts solr / example / exampledocs / *.xmlVýsledkem bude výstup zobrazený níže a bude obsahovat celé volání plus 14 dokumentů, které byly indexovány.
Dashboard také zobrazuje změny. Nová položka s názvem techproducts je viditelná v rozbalovací nabídce na levé straně a počet odpovídajících dokumentů se změnil na pravé straně. Bohužel, detailní pohled na surové datové sady není možný.
V případě, že je třeba odstranit jádro / kolekci, použijte následující příkaz:
$ solr / bin / solr delete -c techproductsDotaz na data:
Apache Solr nabízí dvě rozhraní pro dotazování na data: prostřednictvím webového řídicího panelu a příkazového řádku. Níže vysvětlíme obě metody.
Odesílání dotazů prostřednictvím řídicího panelu Solr se provádí následovně:
- Z rozbalovací nabídky vyberte uzel techproducts.
- Z nabídky pod rozbalovací nabídkou vyberte položku Dotaz.
Na pravé straně se objeví vstupní pole, která formulují dotaz jako obslužná rutina požadavku (qt), dotaz (q) a pořadí řazení (řazení). - Vyberte vstupní pole Dotaz a změňte obsah položky z „*: *“ na „manu: Belkin“. To omezuje vyhledávání od „všech polí se všemi položkami“ až po „datové sady, které mají v poli manu název Belkin“. V tomto případě název manu zkracuje výrobce v ukázkové datové sadě.
- Dále stiskněte tlačítko s Provést dotaz. Výsledkem je tištěný požadavek HTTP nahoře a výsledek vyhledávacího dotazu ve formátu dat JSON níže.
Příkazový řádek přijímá stejný dotaz jako na řídicím panelu. Rozdíl je v tom, že musíte znát název polí dotazu. Chcete-li odeslat stejný dotaz jako výše, musíte v terminálu spustit následující příkaz:
$ zvlněníhttp: // localhost: 8983 / solr / techproducts / dotaz?q = ”manu”: ”Belkin
Výstup je ve formátu JSON, jak je znázorněno níže. Výsledek se skládá z hlavičky odpovědi a skutečné odpovědi. Odpověď se skládá ze dvou datových sad.
Balení:
Gratulujeme! První fázi jste dosáhli s úspěchem. Je nastavena základní infrastruktura a vy jste se naučili, jak nahrávat a dotazovat dokumenty.
Další krok se bude zabývat tím, jak upřesnit dotaz, formulovat složitější dotazy a porozumět různým webovým formulářům poskytovaným na stránce dotazu Apache Solr. Budeme také diskutovat o tom, jak následně zpracovat výsledek hledání pomocí různých výstupních formátů, jako jsou XML, CSV a JSON.
O autorech:
Jacqui Kabeta je ekolog, vášnivý výzkumník, trenér a mentor. V několika afrických zemích pracovala v IT průmyslu a prostředí nevládních organizací.
Frank Hofmann je IT vývojář, trenér a autor a dává přednost práci z Berlína, Ženevy a Kapského Města. Spoluautor knihy Debian Package Management Book, která je k dispozici u dpmb.org
- [1] Apache Solr, https: // lucene.apache.org / solr /
- [2] Lucene Search Library, https: // lucene.apache.org /
- [3] AdvaS Advanced Search, https: // pypi.org / project / AdvaS-Advanced-Search /
- [4] Nejlepší 165 vyhledávacích projektů s otevřeným zdrojovým kódem, https: // awesomeopensource.com / projects / search-engine
- [5] ElasticSearch, https: // www.elastický.co / de / elasticsearch /
- [6] Apache Software Foundation (ASF), https: // www.apache.org /
- [7] FESS, https: // fess.codelibs.org / index.html
- [8] ElasticSearch, https: // www.elastický.kód/
- [9] Apache Solr, sekce Ke stažení, https: // lucene.apache.org / solr / stahování.htm
- [10] Nvidia V100, https: // www.nvidia.com / en-us / data-center / v100 /
- [11] Apache Tika, https: // tika.apache.org /
- [12] Rozložení adresáře Apache Solr, https: // lucene.apache.org / solr / guide / 8_8 / instalaci-solr.html # rozložení adresáře
- [13] Jak fungují vyhledávače: procházení, indexování a hodnocení. Průvodce pro začátečníky k SEO https: // moz.com / začátečníci-průvodce-k-seo / jak-vyhledávací-motory-fungují
- [14] Začínáme s Apache Solr, https: // sematext.com / průvodci / solr / #: ~: text = Solr% 20works% 20by% 20gathering% 2C% 20store, s% 20huge% 20volumes% 20of% 20data