Komentáře k článku
Elasticsearch: Vyhledáváme hezky česky

Dobré fulltextové vyhledávání pro češtinu nemusí nutně znamenat investici do proprietárních knihoven a slovníků. Nevěříte? Zkusím vás přesvědčit! Ukážeme si, jak nakonfigurovat Elasticsearch pro fulltextové vyhledávání v českých textech.
Detailnější popis konfigurace ala článek Sphinx Search API
Dobrý den, chtěl bych se optat zda neuvažujete o detailnějším článku ohledně konfigurace a práce s API v rozsahu jako je nyní v seriálu Sphinx Search API zde na zdrojáku. Mám zkušenosti s Phinx ze dvou projektů, ale ze zkušeností mi bylo doporučováno spíše Elasticsearch. Byl bych za to velmi vděčný…
Re: Detailnější popis konfigurace ala článek Sphinx Search API
Pripájam sa, určite je viac ľudí, ktorí by to taktiež uvítali.
Ad: Detalnější popis konfigurace a API
Zdravím,
dík za zájem o článek, je to určitě povzbuzující pro další psaní.
Upřimě řečeno o dalších článcích uvažuji, ale domnívám se, že články, po jakých voláte, by měly být především součástí samotných stránek elasticsearch.org (dev. tým několikrát zmínil, že na lepší dokumentaci či dokonce knížce pracuje). Proto se přikláním k jinému formátu článků, které se budou týkat spíš konkrétních oblastí, než obecného úvodu a konfiguraci. Samozřejmě se tím dostanu i ke konfiguraci a konkrétním ukázkám použití API. Takže pokud si někdo dá tu práci, a sám začne Elasticsearch zkoušet, tak se domnívám, že by takové články pro něj mohly mít větší přínos.
Po druhém díle o češtině bych se rád věnoval nějakému článku o distribuovaném modelu Elasticsearch (opět je to dost odvislé od toho, jak na low level úrovni pracuje Lucene), je to podle mě docela zásadní téma s velkým přesahem.
Takové téma je ovšem náročné na zpracování, takže v mezičase určitě neodmítám další náměty :-)
Re: Ad: Detalnější popis konfigurace a API
Pridavam se s prosbou o „tutorial“ od piky. Chapu, ze odborne clanky resici konkretni problem jsou mozna vice prinosem, ale pocet cilovych ctenaru neni az tak velky. Programator dnes resi spousty veci, potrebuje to kvalitne a aby to nemusel resit moc dlouho. Tutorial o Sphinx je uplne nejlepsi uvod do problemu, po jeho precteni si je clovek shopny udelat v pohod vyhledavani.
Re: Ad: Detalnější popis konfigurace a API
Já to naprosto chápu. Kdybych za sebou neměl několika-letou zkušenost s Elaticem a potřeboval se do něj dostat rychle, tak bych byl možná taky zoufalý. Ale jak jsem jednou napsal, podle mě takový basic tutoriál patří na stránky elasticsearch.org a já upřimně nerozumím tomu, proč tam dodnes není (a to říkám s tím, že jsem jednu dobu do dokumentace Elasticsearch.org přispíval a věnoval jí nemalé množství osobního času). Na druhou stranu, takové tutoriály se dnes dají na webu najít, chce to googlit. Řada dobrých úvodů o Elasticsearch lze najít na webu z dílny Karla Minaříka. Mohu je jedině doporučit.
Elasticsearch je ve své podstatě velmi komplexní systém a já asi nejsem ten nejlepší člověk, který by měl „basic“ tutoriál psát. Já rád věci chápu do hloubky a většinou se nespokojím s povrchní znalostí. U fultextu a Elasticsearch může povrchní znalost znamenat neefektivní využívání prostředků, nebo dokonce missuse (vypadá to jako databáze? pak to asi bude databáze – tak proč tam třeba neuložit soubory typu mp3?).
Ale myslím, že pokud tu bude dostatečná poptávka po základním tutoriálu, tak bude i nabídka :-)
Re: Ad: Detalnější popis konfigurace a API
Heh… s/missuse/misuse/
Slovencina
Ako je to s podporou slovenciny?
Slovencina
Myslím, že Lucene nenabízí „out of the box“ stemmer pro Slovenštinu.
Na druhou stranu by podle mě nemuselo být obtížné základní stemmer přidat. Třeba zde: http://vi.ikt.ui.sav.sk/Projekty/Projekty_2008%2F%2F2009/Hana_Pifková_-_Stemer by se dala načerpat inspirace a Lucene komunita by určitě ráda Slovenský stemmer přijala. Věřím tomu, že důkladnější googlení by odhalilo i více stemmerů, pak je to jen otázka licence a vůle :-)
A pokud byste měl fungující Java kód, tak můžete pro Elasticsearch napsat plugin a nemusíte čekat na to, až bude stemmer součástí Lucene.
Ve druhé díle ukážu Hunspell a pro ten Slovenské slovníky existují, takže tam určitá podpora existuje už dnes.
Třídění vs. Řazení :)
Třídíme do tříd podle nějakých společných znaků. Typický příklad jsou facety – výsledky jsou setříděny do tříd majícíh nějakou hodnotu stejnou (např. stejný tag) a je vrácen vždycky počet prvků v danné třídě. V angličtině nejspíš něco jako grouping :)
Řadíme do řady, tedy nějaké posloupnosti. V angličtině sorting.
Zrovna tak jak to bylo použité tady je to zjevné, ale obecně to vede ke zmatení ;) Podobně jako zaměňování kódování a šifrování ;) Mimo to to všem, které to stálo zkoušku z diskrétní matematiky, leze hrozně na nervy :D
Ad: Třídění vs. Řazení :)
Dík za poznámku. A aby to bylo ještě pochopitelnější, tak pro úplnost dodám, že Elasticsearch umožňuje řadit setřízené [1]. Jinými slovy, pokud máte facety a chcete je seřadit podle abecedy a né podle četnosti.
[1] http://www.elasticsearch.org/guide/reference/api/search/facets/terms-facet/ viz „ordering“
Praktické ukázky
Super článek, díky za něj. Do budoucna by se mi líbilo něco praktičtějšího – např. jak na kooperaci MySQL a ES apod. – zkrátka nějaké demo „jak se to dělá v praxi“. Plánujete i něco takového?
Ještě doplním, že na hraní s ES existuje do prohlížeče Chrome moc pěkné rozšíření s názvem Sense (https://chrome.google.com/webstore/detail/sense/doinijnbnggojdlcjifpdckfokbbfpbo)
Re: Praktické ukázky
Dík, jsem rád že se článek líbí.
Pokud kooperací s databází myslíte situaci, kdy v databázi máte uložena primární data která chcete replikovat do ES za účelem full-text vyhledávání, tak se o to musíte postarat sám (ES Vám však vyjde vstříc v podobě šikovných API). Možností je celá řada a záleží jen na Vás, co si vyberete. Začít můžete třeba tak, že se podíváte na JDBC River [1], možná bude plně vyhovovat.
Co se týká nějaké „praktické“ ukázky, tak nejste první, kdo tento návrh vznesl. Zvažuji to. Otázkou je „míra“ té praktičnosti. Bude-li ukázka stručná, tak hrozí nebezpečí, že nebude pokrývat skutečně praktické případy užití. Na druhou stranu bude-li moc „praktická“ může být hodně komplexní. To druhé už na GitHubu je, protože tam jsou celé zdrojáky vyhledávače, který implementujeme pro JBoss.org (ale pro začátečníky to je zcela nevhodné a navíc to není zaměřené na češtinu). Každopádně zvažuji, že bych mohl vyrobit ukázku vyhledávání nad českou a slovenskou wikipedií.
[1] https://github.com/jprante/elasticsearch-river-jdbc
Dobrý den,
v textu máte chybu. Výraz CharT filter neexistuje, Char Filter ano.
Sort pre celú vetu
Pokiaľ bude v analyzéri nastavený tokenizer „standard“ tak nebude sort pre vetu fungovať správne. Je potrebné použiť tokenizér „keyword“ ktorý ako token vráti celý vstup. Viď https://www.elastic.co/guide/en/elasticsearch/guide/current/sorting-collations.html a https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keyword-tokenizer.html
Content-Type header [application/x-www-form-urlencoded] is not supported
V novější verzi ElasticSearch dostávám s tutoriálem chybu:
Za curl příkaz je potřeba přidat parametr: