IBM Domino a Apache Solr

Podobné dokumenty
Vybraná zajímavá Lotus Notes řešení použitelná i ve vašich aplikacích. David Marko TCL DigiTrade

SUTOL Symposium 2014

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

Co je (staro)nového v DSpace

MBI - technologická realizace modelu

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Možnosti propojení Lotus Notes/Domino a jiných systémů. Ondřej Fuxa Your System spol. s r.o.

1 Webový server, instalace PHP a MySQL 13

Převod LN aplikace do xpages

Obrázek 1: Struktura programu z hlediska zapojení

Databázové a informační systémy

RESTful API TAMZ 1. Cvičení 11

Novinky v IBM Notes a Domino. CubeTeam Dan Vrána

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

OptimiDoc dokáže takové dokumenty zpracovat a distribuovat napříč firmou.

Webové rozhraní TELEFONNÍ STYK POD KONTROLOU NÁSTROJ PRO ŘÍZENÍ CHODU CALL CENTRA A ZPRACOVÁNÍ TELEFONNÍCH HOVORŮ. Funkcionalita

Co je nového 2018 R2

1. Webový server, instalace PHP a MySQL 13

Stručný obsah. K2118.indd :15:27

Začínáme s Tovek Tools

O Apache Derby detailněji. Hynek Mlnařík

PRODUKTY. Tovek Tools

Oracle XML DB. Tomáš Nykodým

PRODUKTY. Tovek Tools

UDS for ELO. Univerzální datové rozhraní. >> UDS - Universal Data Source

Domino 10 nové komponenty a související témata (node.js, ES )

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Otevřený svět ICS. Radim Navrátil. aneb co svět oken a ICS? Vedoucí oddělení aplikační administrace a bezpečnosti, YOUR SYSTEM, spol. s r.o.

Statistica, kdo je kdo?

Tovek Tools. Tovek Tools jsou standardně dodávány ve dvou variantách: Tovek Tools Search Pack Tovek Tools Analyst Pack. Připojené informační zdroje

Nové funkce a technologie v současných a budoucích verzích Invenia. Jiří Kunčar

Ukládání a vyhledávání XML dat

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Vyhledávání na portálu Knihovny.cz

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Obrázek 6.14: Prohlížec nápovedy

Nový design ESO9. E S O 9 i n t e r n a t i o n a l a. s. U M l ý n a , P r a h a. Strana 1 z 9

KIV/PIA 2013 Jan Tichava

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Digitalizace a Digitální archiv Státního oblastního archivu v Třeboni po čtyřech letech. Výsledky a perspektivy dalšího vývoje

API AIS ČR Technická specifikace

1. Podmínky chodu aplikace

Manuscriptorium jako základ pro virtuální badatelské prostředí

Centrální portál knihoven

PRODUKTY Tovek Server 6

Semestrální práce 2 znakový strom

7. Enterprise Search Pokročilé funkce vyhledávání v rámci firemních datových zdrojů

Požadavky pro výběrová řízení TerraBus ESB/G2x

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U);

Znalostní systém nad ontologií ve formátu Topic Maps

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Zpráva o zhotoveném plnění

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Popis logování v aplikačním serveru

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Aplikační software III. ročník. Archivace dat. Praha březen Zpracoval: Ing. Pavel Branšovský. pro potřebu VOŠ a SŠSE

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

D R U P A L V O J T Ě C H K U S W O J T H A

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Integrace prostředí pomocí TDI v praxi

- 1 - Smlouva o dílo. uzavřená podle 536 a násl. obchodního zákoníku v účinném znění

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

I.CA RemoteSeal. Ing. Filip Michl První certifikační autorita, a.s

Provozní pokyny. Aplikační stránky

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Novinky IPAC 3.0. Libor Nesvadba Karel Pavelka

InterSystems Caché Post-Relational Database

1 Vytvoření oboustranné informační platformy MČ občan (mobilní aplikace + rozhraní API pro přenos informací do webových stránek městské části)

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale

Geoportál DMVS využití a další rozvoj

MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2)

Embedded Experience Ondřej Fuxa, YOUR SYSTEM spol. s r.o.

Java a XML. 10/26/09 1/7 Java a XML

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

IS pro podporu BOZP na FIT ČVUT

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Petr Nevrlý

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

IMPORT ZÁKRESŮ DO MAPOVÝCH

Tzv. životní cyklus dokumentů u původce (Tematický blok č. 4) 1. Správa podnikového obsahu 2. Spisová služba

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Mobilní skladová evidence v QI

Program Sharpdesk Sharpdesk řešení pro správu dokumentů

Workshop Exact Software CEE

Formy komunikace s knihovnami

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Firemní informační systém

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

Prezentace CRMplus. Téma: CRMplus jako nástroj pro kontrolu a vyhodnocení rozpracovanosti dílů na zakázkách

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Profilová část maturitní zkoušky 2013/2014

Softwarové komponenty a Internet

Vyhledávání v citační databázi Web of Science (WOS)

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Architektura aplikace

Transkript:

IBM Domino a Apache Solr Ondřej Fuxa YOUR SYSTEM, spol. s r.o. Jan Krejcárek

Jan Krejcárek Ondřej Fuxa IBM+Java enthusiast @jan_krejcarek @fuxa_ondrej

IBM Domino a Solr Faceted search

Apache Solr možnosti Kategorizování výsledků a postupné filtrování (faceted search) Zvýrazňování Návrhy Geospatial search pro vyhledávání dle zeměpisných dat Prioritizace polí při vyhledávání Statistiky Větší kontrola nad tím, co se indexuje a jak Zdarma 4

Solr je samostatný aplikační server, používá HTTP pro indexaci dat a zpracování dotazů Uživatelé s ním přímo nepracují, vaše aplikace indexuje data a prezentuje výsledky vyhledávání uživateli HTTP 5

Apache Solr Core 1 Core 2 Core N Solr udržuje indexovaná data v oddělených jádrech ( core ) Každý core má vlastní konfiguraci 6

Každá aplikace má zpravidla vlastní konfiguraci a index Aplikace 1 Solr Core 1 Aplikace 2 Core 2 7

Více příbuzných aplikací může sdílet jeden index Provozní Solr Core 1 Archiv 8

Solr Core Konfigurace managed-schema solrconfig.xml Core Dokumenty 9

Konfigurační soubor managed-schema Obsahuje definici polí a typů polí Každé pole má název a typ Pole mohou být použita pro indexování (indexed = true ) Pole mohou být uložena, později pak mohou být načtena (stored = true ) např. obsah dlouhého článku není třeba ukládat, jen se použije pro indexování. Později se načte ID článku a ten je zobrazen z databáze <field name="title" type="text_general indexed="true stored="true required="true"/> 10

managed-schema <fieldtype name="text_general" class="solr.textfield" positionincrementgap="100" multivalued="true"> <analyzer type="index"> <tokenizer class="solr.standardtokenizerfactory"/> <filter class="solr.stopfilterfactory" ignorecase="true" words="stopwords.txt" /> <filter class="solr.lowercasefilterfactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.standardtokenizerfactory"/> <filter class="solr.stopfilterfactory" ignorecase="true" words="stopwords.txt" /> <filter class="solr.synonymgraphfilterfactory" synonyms="synonyms.txt" ignorecase="true" expand="true"/> <filter class="solr.lowercasefilterfactory"/> </analyzer> </fieldtype> 11

Definice typu pole Určuje, co se stane s obsahem pole při indexování a při dotazování. Např. že Obsah má být rozdělen do částí (např. slov) Častá slova mají být odstraněna Text má být převeden na malá písmena Obsah jednoho pole může být zkopírován do jiného pole jiného typu pro rozdílnou analýzu (velmi časté) <copyfield source="author" dest="author_full"/> 12

solrconfig.xml <requesthandler name="/search" class="solr.searchhandler"> <lst name="defaults"> <str name="echoparams">explicit</str> <int name="rows">20</int> <str name="df">subject</str> <str name="deftype">edismax</str> <str name="qf">subject^20 description^0.8</str> <str name="q.alt">*:*</str> <str name="mm">100%</str> </lst> </requesthandler> 13

Další možnosti konfigurace Extrakce obsahu a metadat ze souborů (Word, Excel, PDF, HTML, XML, JPEG, video a dalších ) Data Import Handler pro načítání dat z externích zdrojů (relační databáze, RSS, email) 14

Solr a IBM Domino - architektura Stav věci IBM Domino nekomunikuje s Apache Solr přímo. Apache Solr poskytuje JAVA knihovnu pro integraci. Co s tím? Programátor neřeší HTTP komunikaci ani zpracování JSON nebo XML. Implementace nadstavby nad standardní Apache Solr knihovnu, která ji rozšíří o funkce pro převod notes dokumentu do Solr dokumentu. Výsledek tohoto snažení použijeme v XPages, v Notes agentovi.

6 9 th Sutol Conference, November 2017 SOLR a IBM Domino - architektura X P A G E S 1 8 IBM Domino 2 7 3 Implementace Apache Solr pro IBM Domino (jar knihovny) Standardní Apache Solr jar knihovny 4 5 Apache Solr 1. Uživatel hledá 2. Aplikace zavolá příslušnou metodu Solr rozšíření pro IBM Domino 3. Požadavek je transformován z notes světa do Solr světa 4. Odejde přes HTTP požadavek v interním formátu na Solr server 5. Solr vrátí výsledek hledání 6. Odpověď je transformována do standardních Java tříd Apache Solr 7. Následuje transformace do notes světa 8. Zobrazení odpovědi uživateli

Solr a IBM Domino co jsme udělali? Abstraktní vrstvu mezi IBM a Solr Obecná transformace mezi IBM dokumentem a Solr dokumentem Metody, které vrátí výsledky a facets ve formátu vhodném pro IBM komponenty XPages Vyhledávání, které respektuje READERS pole

Solr a IBM Domino uniquekey V rámci Solr schématu je potřeba mít identifikaci záznamu v Notes aplikaci (uniquekey) Update změn Dohledání záznamu pro otevření ze seznamu zobrazených výsledků Pokud jedna aplikace, tak stačí UNID Pokud jeden server, tak stačí replika ID a UNID V nejhorším případě název serveru, replikace ID a UNID

Solr a IBM Domino první naplnění dat Jednorázový notes agent Zpracuje všechny historické záznamy a prvotně naplní Solr Zkušenost přibližně 80 tis. záznamů trvá 4-5 minut Pozor na soft / hard commit

Solr a IBM Domino okamžitá indexace PROBLÉM: Jak zajistit, že vytvořený / aktualizovaný záznam v notes aplikaci je ihned dostupný přes vyhledávání? ŘEŠENÍ: TriggerHappy http://www.openntf.org/main.nsf/project.xsp?r=project/trigger%20happy OpenNTF DLL rozšíření IBM Domino Ověřena funkčnost na IBM Domino 9.0.1 FP9 (WINDOWS) Reaguje na nízko úrovňové operace v nadefinované Notes databázi a když nastanou, tak ihned spustí standardního agenta. Agent zajistí okamžitou indexaci a hard commit tj. Solr search ihned vrací nová data. ZÁVĚR: Rychlejší než standardní FullText vyhledávání od IBM

Solr a IBM Domino bezpečnost Solr neřeší oprávnění ke čtení záznamů Proto nemá být přímo dostupný pro uživatele FW omezení na port Solr Obecná třída zajišťuje naplnění schématu informacemi o READERS jména, role, skupiny Automatické doplnění filtru READERS dle přihlášeného uživatele FILTR, protože neovlivňuje pořadí výsledku dle skóre

Solr a IBM Domino XPages (UI) Custom Control Obecná implementace, tak aby se Facets přidávaly a ubíraly dle toho jak programátor v čisté Java třídě nadefinuje Boostrap (responzivní design) MVC přístup Viz přednáška Just a View: An Introduction To Model-View- Controller Pattern in XPages Použití view scope proměnné page vložené pomocí ApplicationListener Custom Control čistě UI Kód jen v čisté Java třídě

Solr a IBM Domino XPages (UI) 1. Custom Control Rozložení vlastní stránky Pole Hledat IBM komponenta repeat pro zobrazení všech facets, které jsou v odpovědi 2. Custom Control (ccsearchdata) Pro jednotlivý facet zobrazí všechny hodnoty v něm obsažené Užití opět IBM komponenty repeat Vstupní parametr filtermod určuje, zda je možné užít jen jeden filtr v jeden okamžik, či se dají filtry kombinovat

Solr a IBM Domino XPages auto facets <xp:repeat id="facetgroups" var="facetgroup" value="#{page.facetgroupnames}" rows="30" removerepeat="true" repeatcontrols="false"> <xp:this.datacontexts> <xp:datacontext var="facetitemname"indexvar="facetitemname" value="#{javascript:page.getfacetitemname(facetgroup)}"> </xp:datacontext> </xp:this.datacontexts> <xp:text tagname="strong" styleclass="icon-left-fa fa-file" value="#{facetgroup}"/> <xc:ccsearchdata refreshid="content" filtermode="add" categoryname="#{facetitemname}"> <xc:this.facetresults> <![CDATA[#{javascript: page.getfacets(facetgroup)}]]> </xc:this.facetresults> </xc:ccsearchdata> <xp:link escape="true" id="removefilter" title="zrušit tento filtr" rendered="#{javascript: page.isusefilter(facetitemname)}" styleclass="textdanger"> <xp:eventhandler event="onclick" submit="true" refreshmode="partial" refreshid="content"> <xp:this.action> <![CDATA[#{javascript:page.removeFilter(facetItemName)}]]> </xp:this.action> </xp:eventhandler> <span class="fa fa-times"/> Zrušit filtr </xp:link> </xp:repeat>

Solr a IBM Domino JAVA implementace public long search() { SolrDataAccess sda = new SolrDataAccess(); // nastaveni umisteni serveru Apache Solr... // nastaveni facetu pro rychlou filtraci vysledku sda.addfacet("typ", "type"); sda.addfacet("firma", "company_str"); sda.addfacetinterval("částka", "amount", new String[] {"[0,50000]", "[50001,150000]", "[150001,250000]", "[250001,*]"}); sda.addfacet("vyřizuje", "responsible_str"); // nastaveni seznamu pouzitych filtru... // filtrace dle prav cloveka... // provede vyhledani polozek v Solr resultsfound = sda.search(buildquery()); pageresults = sda.getcurrentpageresults(); facets = pageresults.getfacetgroupcollection(); } return resultsfound;

Zdroje http://lucene.apache.org/solr/ Solr Reference Guide Apache Solr Enterprise Search Server, third edition 26