Full-textové vyhledávání. Július Štroffek Revenue Product Engineer Sun Microsystems

Podobné dokumenty
PostgreSQL upgrade včera, dnes a zítra. Zdeněk Kotala Revenue Product Engineer Sun Microsystems

INDEXY JSOU GRUNT. Pavel Stěhule

KTS 250 UVEDENÍ NA TRH

Práce s fulltextem v databázi

Zadání úlohy do projektu z předmětu IPP 2013/2014

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

SA011102S SA011104S SA011108S. MP3 p ehráva

SQL injection princip a ochrana

Vstup České republiky do EU podpořily téměř tři čtvrtiny studentů a tento údaj odpovídá i výsledkům roku minulého.

1. Zobrazení typu telefonního přístroje. 3. Protokol LLDP Link Layer Discover Protocol. 4. Inicializace síťového připojení

Jak připravit IBM System x server pro zákazníka

Databázové a informační systémy Jana Šarmanová

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Databáze SQL SELECT. David Hoksza

cstore_fdw column store pro PostgreSQL Prague PostgreSQL Developer Day 2015 Jan Holčapek

0.56. Satelitní měřící systém TEST REPORT. 58 TELE-satellite & Broadband 08-09/ /2008

TimescaleDB. Pavel Stěhule 2018

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Funkční analýza Předmět Informační systémy. Daniela Szturcová

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

4. Základy relačních databází, logická úroveň návrhu

Videorekordéry. Klávesové zkratky pro SHR-204X. Stiskněte uvedená tlačítka po dobu 5 sekund. Poté uslyšíte zvukový signál.

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

Databáze Caché CSP Custom Tags

Toto oznámení na webové stránce TED:

SQL - trigger, Databázové modelování

Anténa pro pět satelitů od SeaTel


Komunikační modul PCS200

Michal Krátký, Miroslav Beneš

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Univerzita Pardubice Fakulta ekonomicko-správní. Současný stav fulltextového vyhledávání v MySQL Ivana Broklová

Distanční opora předmětu: Databázové systémy Tématický blok č. 7: Fulltextové vyhledávání Autor: RNDr. Jan Lánský, Ph.D.

Databázové systémy. Cvičení 6: SQL

Vážení obchodní přátelé, rádi bychom Vám představili novinky z oblasti systémů průmyslové televize společnosti Bosch. Obsah:

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Tabulka fotbalové ligy

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Textmining a Redukce dimenzionality

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

MapleCloud a jeho použ ití. Vladimír Žák

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Vyhledávání podle klíčových slov v relačních databázích. Dotazovací jazyky I ZS 2010/11 Karel Poledna

Digital Powerhouse PROMAX, Španělsko

MP600 / 601 / 602 / 603 / 604 / 605 / 606 / 607 / 608 / 609

Využití informačních technologií v cestovním ruchu P1

Univerzita Pardubice Fakulta ekonomicko-správní Ústav systémového inženýrství a informatiky Návrh a tvorba databáze v prostředí vybrané firmy

PostgreSQL 8.3. požadavky na odezvu atd. Zatím nedostižnou metou je implementace celého standardu ANSI

Databáze ROMARIN (WIPO)

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

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

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL

KAMPAŇ NA ZVÝŠENÍ POVĚDOMÍ VŠICHNI MÁME STEJNÉ SNY

Microsoft Dynamics CRM Online. Martin Čejka Solution Sales Professional Business Solution

Aplikace algoritmů umělé inteligence pro data mining v prostředí realitního trhu

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Verzování a publikace dat na webu za pomoci PostgreSQL

Analýza dat na PC I.

Implementační manuál

EBSCOhost. Interní uživatelská příručka pro online přístup v rámci projektu eifl Direct. Adresa:

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Vkládání, aktualizace, mazání

Popis ového API pro automatické registrace.eu kontaktů a.eu domén

PRÉCIS STRUKTUROVANÁ DATABÁZE JAKO ODPOVĚĎ NA NESTRUKTUROVANÝ DOTAZ. Dominik Fišer, Jiří Schejbal

IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for

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

NSWI096 - INTERNET. Úvod do HTML

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

PCS260. 3G / 2G / GSM komunikační modul. Instalační a programovací manuál. Eurosat CS spol. s r. o. Rev. 2016/10

SW ATTIS Synchronizace s LDAP serverem

Využití XML v DB aplikacích

Indexace audiovizuálních archivů s využitím metod automatického rozpoznávání řeči a obrazu

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

KONDIČNÍ PROGRAM PRO ŽENY

Modely Technomate s více výstupy

SQL tříhodnotová logika

Hřídele a hřídelové spojky

Modely vyhledávání informací 4 podle technologie. 1) Booleovský model. George Boole Aplikace booleovské logiky

ČESKÁ TECHNICKÁ NORMA

Výkonnostní archeologie

Kontakty 3 Úvod do hmot 4 Typy hmot 5. Zadání nové hmoty 7. Oprava existující hmoty 10. Skupiny hmot 11. Kombinace skupin hmot 14

Uživatelský modul. File Uploader

ECL MODBUS OPC. Návod k použití

Použití PostgreSQL v. P2D Martin Swiech

Info21, spol. s r.o. Petr Dobšovič Software pro obalový průmysl

Monitoring výkonu PostgreSQL

Datablades včera, dnes a zítra

GV-VMS. Specifikace: Video kodek MJPEG, H khz / 16-bit, 32 khz / 16-bit

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

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

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

Object-relational mapping (JPA, Hibernate)

Transkript:

Full-textové vyhledávání v PostgreSQL Július Štroffek Revenue Product Engineer Sun Microsystems 1

Agenda Historie Cíle full-textového vyhledávání Databázové objekty pro Full-Text Search (FTS) > Datové typy, funkce a operátory > Parsery, šablony, slovníky, konfigurace Zpracování prohledávaného textu a dotazů Vyhledávání a ohodnocování (ranking) Indexy pro Full-Text Search 2

Historie 2000 2005 OpenFTS Open Full Text Search > XWare Team - Oleg Bartunov, Teodor Sigaev, Daniel Wickstrom > Založen na PostgreSQL, TSearch, TSearch2 > PostgreSQL využívá pouze pro ukládání dat 2003 2007 TSearch2 contrib module > Přesun funkcionality z OpenFTS 2008 > Od verze PostgreSQL 8.3 je FTS součást jádra DB 3

Cíle full-textového vyhledávaní Najít dokumenty obsahující zadaná slova Efektivně vyhledávat ve velkém množství dokumentů Zaměřit se pouze na důležitá slova Považovat různé tvary stejného slova za slova stejná Umět pracovat s více jazyky Uživatelská konfigurovatelnost 4

Databázové objekty FTS Full-text search poskytuje následující databázové objekty > Parsery transformace vstupního textu na posloupnost tokenů; \dfp(+) > Šablony slovníkové schéma/formát; \dft(+) > Slovníky seznam dvojic slov pro nahrazení; slova, která se ignorují tzv. stop words; \dfd(+) > Konfigurace parser a posloupnost slovníků; \df(+) > Datové typy tsvector, tsquery > Funkce, operátory Contrib modul pro kompatibilitu s verzí 8.2 5

Full-Text Search - schéma 6

Datový typ tsvector I Reprezentuje prohledávaný dokument Seznam slov/tokenů vyskytujících se v dokumentu Může obsahovat pozice slov Řazení slov podle délky slova a abecedně Lepší je použít normalizace dle slovníků Přetypování pomocí ::tsvector 7

Datový typ tsvector II Funkce to_tsvector() - normalizace slov dle slovníků setweight(tsvector, char ) > Nastavení váhy pro všechny prvky - sjednocení tsvector-ů... viz. manuál PostgreSQL 8.3 8

Ukázka nastavení vah select setweight( to_tsvector('book Title'), 'A' ) setweight( to_tsvector('this is a book text'), 'B' ); 9

Datový typ tsquery Reprezentuje dotaz nad tsvector-mi Použití logických spojek a negace, &,,! Nutná normalizace dle stejných slovníků jako prohledávaný text Přetypování pomocí ::tsquery Funkce to_tsquery() > Vytvoření tsquery s použitím logický spojek &,,! > Normalizace slov dle slovníků Logické operátory &&,,!! 10

Datové typy Ukázky 11

Funkce a operátory I Vyhledávání Operátory @@, @@@ > S Výsledkem je pravdivostná hodnota jestli dokument vyhovuje zadanému dotazu > Použití @@@ je nutné pro dotaz využívající GIN index a mající podmínku na ranking ts_headline() > Zobrazení vyhledávané části v textu 12

Funkce a operátory II Ohodnocování (ranking) ts_rank(weights[], tsvector, tsquery, normalization) > Ohodnocení splněnosti dotazu v závislosti na vzdálenosti hledaných slov v dokumentu ts_rank_cd() > Používá jinou funkci tzv. cover density 13

Funkce a operátory Ukázky 14

Podpora národních jazyků Pro různé jazyky musí existovat různé konfigurace zpracování textu v daném jazyce Všechny funkce zpracovávající texty pro FTS mají volitelně první parameter konfiguraci FTS Pokud není konfigurace uvedena, použije se výchozí t.j. get_current_ts_config() Parameter - set/show default_text_search_config Inicializace dle lc_ctype při initdb, pokud konfigurace s daným jménem existuje 15

Parser Standardně dostupný je pouze výchozí Dělení dokumentu na tokeny několika typů > asciiword, word, numword, asciihword, hword, numhword, hword_asciipart, hword_part, hword_numpart, email, protocol, url, host, url_path, file, sfloat, float, int, uint, version, tag, entity, blank Znaky slova jsou definovány dle nastavení lc_locale na serveru 16

Parser - ladění ts_token_type('default') > Vrátí seznam typů tokenů pro daný parser ts_parse('default', Document) > Vypíše seznam tokenů a odpovídajících řetězců po zpracování uvedeného dokumentu daným parserem 17

Parser - ladění Ukázky 18

Slovníky Vyřazují často se vyskytující slova (tokeny) > Mezerové znaky, určité členy, předložky > Pomocné slovesa Normalizovat tvar slov > Podst. jména - první pád, slovesa neurčitek > Zaokrouhlení čísel > Úprava url na zhodný tvar > Nahrazení synonymem Výstupem jednoho slova může být i několik slov, tzv. lexémů 19

Vytvoření slovníku šablony I pg_catalog.simple > Obsahuje pouze stop words pg_catalog.synonym > Obsahuje dvojice slov pro nahrazení (nejen synonyma) pg_catalog.thesaurus > Zobecnění synonym pro celé fráze > Musí obsahovat právě jeden podslovník 20

Vytvoření slovníku šablony II pg_catalog.ispell > Konverze z pravopisního slovníku > Pravidla pro generování různých tvarů jsou použita pro úpravu na základní tvar (kořen) > Problém s úpravou nepravidelných slov chybí vazba na základní tvar pg_catalog.snowball > Použit pro podporu všech současně podporovaných jazyků danish, dutch, english, finnish, french, german, hungarian, italian, norwegian, portuguese, romanian, russian, spanish, swedish, turkish > Viz http://en.wikipedia.org/wiki/stemming 21

Slovníky - ladění ts_lexize(dictionary, token) > Zobrazí výstup slovníku při zpracování daného tokenu postgres=# select * from ts_lexize('english_stem', 'cats'); ts_lexize ----------- {cat} (1 row) 22

Konfigurace Určuje parser a slovníky, kterými se zpracovávají příslušné dokumenty Specifikuje mappingy na posloupnosti slovníků pro různé typy tokenů Viz \df+ english 23

Full-Text Search - schéma 24

Ukázka konfigurace postgres=# \df+ english Text search configuration "pg_catalog.english" Parser: "pg_catalog.default" Token Dictionaries -----------------+-------------- asciihword english_stem asciiword english_stem email simple hword english_stem hword_numpart simple hword_part english_stem int simple... version simple word english_stem 25

Vytvoření slovníku a konfigurace Ukázky 26

Indexování GiST Generalized Search Tree > Horší škálovatelnost pro velký počet dokumentů GIN - Generalized Inverted Index > Indexuje dvojice (lexem, seznam dokumentů) > Dobrá škálovatelnost i pro velký počet dokumentů CREATE INDEX INDEX_NAME ON TABLE_NAME USING GIN/GIST (COLUMN_NAME); 27

Otázky, dotazy, připomínky... 28

Ďekuji. 29

Full-textové vyhledávání v PostgreSQL Július Štroffek julius.stroffek@sun.com 30

GiST Generalized Search Tree Pro každý dokument je alokováno bitové pole stejné délky Každé slovo vyskytující se v dokumentu je hashováno do tohoto bitového pole Více slov = stejný bit Při selekci přes index je nutná kontrola (dělá se automaticky) Viz http://en.wikipedia.org/wiki/gist 31

GIN - Generalized Inverted Index Indexuje dvojice (lexem, seznam dokumentů) Pro operátor vyhledání @@ již výsledek index scanu není kontrolován Neukládá informaci o vahách a tudíž při uvedení podmínky používající váhy nutno číst i datové bloky Pro operátor @@@ je nutno výsledek index scanu překontrolovat (dělá se automaticky) nutno použít pokud je použita podmínka na ranking ve where klauzuli!!! 32