User:Andrej Sedlacek Zadanie Zadaním pre tento projekt je vytvoriť nástroj pre fazetové vyhľadávanie v rámci media monitoring SAV, ktoré bude obsahovať fazety podľa výskytov daných ľudí v e-mailoch a podľa ústavov, v ktorých títo ľudia pracujú. Projekt nadväzuje na súbežný projekt spracovania media monitoringu SAV. Vstupné dáta Media monitoring SAV po spracovaní: e-maily sú rozdelené do samostatných súborov ľudia ústavy a referencie sú priradené v samostatnom súbore Emaily obsahujú: nadpis zdroj autora dátum telo správy Napríklad:
-NAZOV- Akademici podporili akčné plány -ZDROJ- Hospodárske noviny; s. 6 -DATUM- 20050429 -AUTOR- Vechter Juraj -TEXT- Predstavitelia akademickej obce včera akceptovali, hoci s niektorými výhradami, dva akčné plány - Vzdelávanie a zamestnanosť a Veda, výskum a inovácie. Plány nadväzujú na nedávno schválenú Stratégiu konkurencieschopnosti. -END- Štatistické priradenie sa skladá zo vzájomného priradenia ľudí, ústavov a referencií na jednotlivé e-maily. JOZEF BADO Fyzikálny ústav SAV 15 254 6952 3 HELENA BALKOVA Ústav krajinnej ekológie SAV 23654 45668 2 ERIKA BOROVA Sociologický ústav SAV 213 564 12220 32001 4 Výstup Fazetové vyhľadávanie v media monitoringu SAV pomocou Apache Solr, ktoré môže byť prínosom pre zamestnancov pretože maximálne zefektívňuje vyhľadávanie v media monitoringu.
Návrh Základným stavebným kameňom tohto softvéru je komplexná dátová štruktúra, ktorá je nutným predpokladom na indexovanie dokumentov pomocou Solr servera. Dátová štruktúra má dva hlavné vstupy: súbory s jednotlivými e-mail správami CSV súbor so štatistickým namapovaním osôb, inštitútov a ich referencií na e-maily Aby sme tieto dve štruktúry spojili, potrebujeme vytvoriť grafovú dátovú štruktúru, ktorá bude obahovať všetky dáta namapované podľa ich vzájomných vzťahov.prvým krokom je vytvorenie prvotnej štruktúry z CSV súboru. Pre tento účel budeme potrebovať: 1. ArrayList, ktorý bude obsahovať všetky kombinácie mien a inštitútov 2. HashMap, ktorá bude obsahovať mapovanie indexov e-mailov na indexy pracovníkov SAV v ArrayList štruktúre Druhým krokom je prechádzanie množinou e-mailov a pomocou HashMap dátovej štruktúry jej priraďovať príslušné referencie na ľudí a ústavy. E-maily je samozrejme nutné rozparsovať a extrahovať z nich požadované dáta. Po vyparsovaní e-mailu sa overí, či sa jeho index nenachádza v HashMap a ak áno do objektu Mail sa doplnia údaje o človeku (a jeho domovského ústavu), ktorý sa v e-maile vyskytuje. Po ukončení parsovania a párovania e-mailov s pracovníkmi SAV budeme mať ku každému e-mailu tieto dáta: Nadpis Zdroj Autor Dátum Text Vyskytnutá osoba (nie vždy) Inštitút (nie vždy)
Keď máme dáta skonsolidované, nasleduje vytvorenie kódu, ktorý nahrá tieto dáta na Solr server aby ich zindexoval. Následne je nutné upraviť kód samotného solr zobrazovača Velocity aby spĺňal požiadavky na fazetovanie indexovaných údajov. Implementácia Na implementáciu tohto projektu bol použitý programovací jazyk JAVA v prostredí Eclipse. Server Solr je nasadený vo verzii 4.0. Najskôr boli vytvorené a naplnené dátové štruktúry pre uchovanie mapovacích údajov o ľuďoch a ústavoch. public class Data { private Map<Integer, Index> indexmap; private List<Index> indexlist; public Map<Integer, Index> getindexmap() { if (indexmap == null) { indexmap = new HashMap<Integer, Index>(); return indexmap; public List<Index> getindexlist() { if (indexlist == null) { indexlist = new ArrayList<Index>(); return indexlist;
Následne bolo nutné rozbehať Solr server a doplniť schému o požadované polia.
<field name="id" type="string" indexed="true" stored="true" required="true" multivalued="false"/> <field name="title" type="text_general" indexed="true" stored="true" multivalued="false"/> <field name="source" type="text_general" indexed="true" stored="true" multivalued="false"/> <field name="author" type="text_general" indexed="true" stored="true" multivalued="true"/> <field name="date" type="date" datetimeformat="yyyy-mm-dd't'hh:mm:sss'z'" indexed="true" stored="true"/> <field name="text" type="text_general" indexed="true" stored="true" multivalued="false"/> <field name="name" type="string" indexed="true" stored="true" multivalued="true"/> <field name="institute" type="string" indexed="true" stored="true" multivalued="true"/> Potom prišiel rad na parsovanie jednotlivých emailov, priraďovanie referencií na ľudí a ústavy SAV a napokon odoslanie dokumentu na Solr server.
public static void processsavmail(string inputfolderpath) { try { MailParser mailparser = new MailParser(inputFolderPath); for (int i = 51200; i < mailparser.getfilecount(); i++) { Mail mail = new Mail(i); mailparser.parsefile(mail); if (savdata.getindexmap().containskey(mail.getindex())) { Index mailindex = savdata.getindexmap().get(mail.getindex()); List<Employee> employeelist = mailindex.getemployeelist(); for (Employee employee : employeelist) { mail.getemployeelist().add(employee); Server.getInstance().IndexDocument(mail); catch (Exception e) { e.printstacktrace();
Po zindexovaní všetkých e-mailov bolo nutné spojazdniť a nastaviť konfiguračné súbory Solru a Velocity zobrazovača aby sa dáta vykreslili v správnom poradí a formáte. Dôležité tiež bolo správne nastaviť fazety pre fazetové vyhľadávanie na základe polí name a institute. <str name="wt">velocity</str> <str name="v.template">browse</str> <str name="v.layout">layout</str> <str name="title">sav_mediamonitoring</str> <!-- Faceting defaults --> <str name="facet">on</str> <str name="facet.field">institute</str> <str name="facet.field">name</str> <str name="facet.mincount">1</str> <str name="facet.limit">-1</str> Čo sa týka vyskytnutých problémov pri vývoji, najviac z nich bolo spôsobených samotným Solr serverom a to najmä kvôli väčšej nábehovej krivke pri práci s týmto nástrojom. Testovanie Testovanie vytvoreného softvéru a webového rozhrania Solr-u prebiehalo priamo na celej množine vstupných dát. Najskôr iba na jej malej referenčnej časti, na základe ktorej bolo testované parsovanie mailov počas vývoja programu. Trochu väčšia množina dát bola použitá pri testovaní správneho nasadenia a konfigurácie Solr servera. Výsledná funkcionalita bola otestovaná na plnom súbore dokumentov.
Záver V rámci tohto projektu z predmetu Vyhľadávanie informácii bol v rámci servera Solr vytvorený fazetový vyhľadávač nad media monitoringom SAV. Program v jazyku JAVA najskôr vyparsuje a popáruje všetky potrebné dáta, ktoré následne odošle na Solr server. Ten si ich zaindexuje a pri každom hľadaní výrazu následne vytvára fazety podľa ľudí a ústavov SAV. Myslím si, že projekt dopadol výborne, pretože vyhľadávanie nad media monitoringom SAV naozaj funguje a v spojení s fazetovým prehľadávaním sa z toho stal naozaj účinný vyhľadávací nástroj, ktorý znamená oproti e-mailom v jednom veľkom súbore naozaj výrazné uľahčenie vyhľadávania.