Práce s fulltextem v databázi



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

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

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

Metodika zpracování finanční analýzy a Finanční udržitelnost projektů

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

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Oracle XML DB. Tomáš Nykodým

FIREBIRD relační databázový systém. Tomáš Svoboda

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

Databáze I. Přednáška 7

Návrh a tvorba WWW stránek 1/14. PHP a databáze

IMPULSNÍ A PŘECHODOVÁ CHARAKTERISTIKA,

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Studie proveditelnosti (Osnova)

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

SQL injection princip a ochrana

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

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

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Zápisování dat do databáze

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Databázové systémy úvod

Databázové systémy a SQL

PHP a Large Objecty v PostgreSQL

Administrace Oracle. Práva a role, audit

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Monitoring výkonu PostgreSQL

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

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

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

Stěhování aplikací. Michal Tomek, Sales Manager

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

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Text úlohy. Systémový katalog (DICTIONARY):

Výkonová nabíječka olověných akumulátorů

PG 9.5 novinky ve vývoji aplikací

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

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

Databázové systémy Cvičení 5.2

Využití XML v DB aplikacích

Úvod do databázových systémů

Databáze II. 1. přednáška. Helena Palovská

Databáze I. Přednáška 4

Studie proveditelnosti (Osnova)

Maturitní témata Školní rok: 2015/2016

Použití databází na Webu

INDEXY JSOU GRUNT. Pavel Stěhule

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Optimalizace dotazů a databázové transakce v Oracle

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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

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

MySQL sežere vaše data

Schéma modelu důchodového systému

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Semestrální práce z DAS2 a WWW

InterSystems Caché Post-Relational Database

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Jazyk SQL databáze SQLite. připravil ing. petr polách

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

Zpracování informací

Sada 1 - PHP. 14. Úvod do jazyka SQL

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

Signálky V. Signálky V umožňují světelnou signalizaci jevu.

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Tabulka fotbalové ligy

5. Využití elektroanalogie při analýze a modelování dynamických vlastností mechanických soustav

Kapitola 6: Omezení integrity. Omezení domény

8.2 Používání a tvorba databází

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

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

6. SQL složitější dotazy, QBE

PŘÍKLAD INDEXY ZÁKLADNÍ, ŘETĚZOVÉ A TEMPO PŘÍRŮSTKU

KIV/ZIS cvičení 6. Tomáš Potužák

Popis regulátoru pro řízení směšovacích ventilů a TUV

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA HORNICKO GEOLOGICKÁ FAKULTA INSTITUT GEOINFORMATIKY. Prostorové databáze

INDIKÁTORY HODNOCENÍ EFEKTIVNOSTI VÝDAJŮ MÍSTNÍCH ROZPOČTŮ DO OBLASTI NAKLÁDÁNÍ S ODPADY

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

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

HAWLE-OPTIFIL AUTOMATICKÝ SAMOČISTÍCÍ FILTR

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Jak funguje GNU/Linux

02008O0008 CS

B Organizace databáze na fyzické úrovni u serveru Oracle

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Jak ušetřit místo a zároveň mít data snadno dostupná. David Turoň

Operátory ROLLUP a CUBE

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

NÁVRH A TVORBA HUDEBNÍ DATABÁZE

Matematika v automatizaci - pro řešení regulačních obvodů:

Administrace Oracle. Jan Šaršon. Audit databáze

PostGIS. Luboš Hejduk, Petr Sedlář 2007

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Měření výkonnosti údržby prostřednictvím ukazatelů efektivnosti

Geografické informační systémy. Databázové systémy pro GIS

Datablades včera, dnes a zítra

Transkript:

Práce s fullexem v daabázi PosgreSQL 8.0 LUKÁŠ ZAPLETAL PosgreSQL 8.0 je kvaliní, svobodná, relační daabázová plaforma fungující pod unixovými operačními sysémy a nově aké pod OS Windows. Mezi hlavní přednosi paří dobrá podpora SQL sandardů, bohaá škála podporovaných daových ypů, velmi propracovaná ochrana inegriy, dobrá nabídka procedurálních jazyků na sraně serveru a kvaliní dokumenace. Vznikla v 90 leech na univerziě v Berekeley (USA) ehdy jako projek POSTGRES. Projek se posupně vyvíjel až do zcela nového projeku Posgres95, kerý již byl SQL kompaibilní. Záhy byl projek přejmenován na PosgreSQL. PosgreSQL podporuje, podobně jako daabáze Firebird, echnologii MVCC. Aby daabáze zajisila konzisenní sav během jedné ransakce, musí hlída, aby daa nějaký jiný uživael v danou chvíli nezměnil. Toho může docíli různými způsoby (například různé druhy zámků), echnologie MVCC používá akzvanou hisorii záznamů, kdy se podobně jako revizní sysém CVS může vrái ke sarším verzím. Daabáze podporuje pohledy, cizí klíče, ransakce a jednoduchou abulkovou dědičnos. Příklad: CREATE TABLE ciies ( ); name ex, populaion real, aliude in -- (in f) CREATE TABLE capials ( sae char(2) ) INHERITS (ciies); PosgreSQL je SQL-2003 kompaibilní a poskyuje bohaou škálu daových ypů, včeně nesandardních (geomerické a geografické úvary včeně operací s nimi). Mezi hlavní přednosi PosgreSQL je její muligenerační archiekura (MVCC). Konzisence není udržována pomocí zámků (ačkoliv zámky ao daabáze plně podporuje, a o jak na úrovni abulek, ak i záznamů), ale pomocí zpěného udržování hisorie jednolivých záznamů. PosgreSQL nabízí programování na sraně serveru, a o v jak vesavěném jazyku PL/pgSQL, ak i jazycích Tcl, Perl a Pyhon včeně spouší (riggerů). Daabázový server lze velmi snadno rozšiřova, a o nejen o nové daové ypy, ale i o nové jazyky. Exisuje velké množsví

zásuvných modulů, rozšiřující funkčnos (cubes, fuzzy srings, sromy, soundex, XML...) Ve verzi 8.0 najdeme kromě jiného novinky, jako jsou body návrau ransakcí (savepoins), abulkové prosory (ablespaces), průběžné (přírůskové) zálohování a mnoho výkonnosních opimalizací. Modul Tsearch2 Pokud máme nainsalovaný modul, je akivace full-exu hračkou: creaedb es psql es es=# \i /usr/share/pgsql/conrib/search2.sql Skrip zaregisruje a vyvoří pořebné srukury a abulky a akivuje nový daový yp svecor. Přesvědčíme se, jak jsme na om: es=# selec dic_name, dic_commen, dic_iniopion from pg_s_dic; dic_name dic_commen dic_iniopion -----------------+-------------------------------------------------- +---------------------- simple Simple example of dicionary. en_sem English Semmer. Snowball. conrib/english.sop ru_sem Russian Semmer. Snowball. conrib/russian.sop ispell_emplae ISpell inerface. Mus have.dic and.aff files synonym Example of synonym dicionary Vidíme, že skrip zaregisroval několik slovníků, nás ovšem pochopielně zajímá podpora češiny, kerou nyní zavedeme. Nejdřív vyzkoušíme, že funguje semování (vracení kořenů) slov, keré je pro fullexové rejsříkování nejdůležiější: es=# SELECT lexize('en_sem','looking'); lexize -------- {look} Modul umí načís slovník pro ISPELL, což je program z projeku GNU sloužící k auomaické konrole exu. Tyo slovníky nejen že obsahují obrovské množsví českých slov, ale aké všechny jejich vary a základní lexémy. Nejprve zaregisrujeme slovník a soubor se sop slovy: INSERT INTO pg_s_dic ( SELECT 'cz_ispell', dic_ini, 'DicFile="/var/mp/czech.dic", AffFile="/var/mp/czech.aff", SopFile="/var/mp/czech.sop"', dic_lexize FROM pg_s_dic WHERE dic_name='ispell_emplae'); Nyní vše vyzkoušíme:

es=# SELECT lexize('cz_ispell','daabázové'); lexize -------------- {daabázový} Kromě semmingu a sop slov lze aké naimporova synonyma, kerá mohou výsledky hledání vylepši. Soubory se synonymy mají podobný var jako se sop slovy obyčejné exové soubory, co řádek o pojem, mezerou jsou odděleny jednolivé další výrazy. O rozložení exu na jednolivá slova se sará parser. Modul Tsearch2 obsahuje jednoduchý parser, kerý si poradí s obyčejným exem a HTML zdrojovým kódem. Oevřená archiekura umožňuje napsa si vlasní parser. Oesujme jej: es=# SELECT * FROM parse('v daabázích jsou uloženy všechny informace o nás.'); okid oken -------+------------ 1 V 3 daabázích 1 jsou 3 uloženy 3 všechny 1 informace 1 o 3 nás. (16 řádek) Ačkoli je o parser jednoduchý, zvládá specialiy ypu URL adresy nebo e-mailu. A nyní již můžeme přisoupi k vlasní vorbě svekorů a práce s nimi. Nejprve je nuno nasavi parser (kódování a sloník): INSERT INTO pg_s_cfg VALUES ('defaul_czech','defaul','cs_cz'); INSERT INTO pg_s_cfgmap SELECT 'defaul_czech',ok_alias,dic_name FROM pg_s_cfgmap WHERE s_name='defaul_russian'; UPDATE pg_s_cfgmap SET dic_name='{cz_ispell,simple}' WHERE ('ru_sem'=any(dic_name) OR 'en_sem' = ANY(dic_name)) AND s_name='defaul_czech';

Parser nyní funguje správně, lemaizuje slova: es=# selec o_svecor('v daabázích jsou uloženy všechny informace o nás.'); o_svecor ----------------------------------------------------------- 'nás':8 'uloži':4 'všechny':5 'daabáze':2 'informace':6 Nyní již můžeme snadno indexova dokumeny nebo jiné exy: CREATE TABLE dokumeny ( id SERIAL PRIMARY KEY, ex, v svecor); CREATE INDEX idxfti_idx ON dokumeny USING gis(v); CREATE TRIGGER svecorupdae BEFORE UPDATE OR INSERT ON dokumeny FOR EACH ROW EXECUTE PROCEDURE search2(v, ); INSERT INTO dokumeny () VALUES ('Tex dokumenu...'); Díky GIST indexu je nyní možné fullexově vyhledáva pomocí binárního operáoru @@. Ve vyhledávacím doazu je možné použí &, nebo negaci! es=# SELECT FROM dokumeny WHERE v @@ o_squery('oracle'); ------------------------- (1 řádka) es=# SELECT FROM dokumeny WHERE v @@ o_squery('!něco'); ----------------------------- Ale o je PosgreSQL aky!! (2 řádek) es=# SELECT FROM dokumeny WHERE v @@ o_squery('(něco & ješ ě ) server'); ---------------------------------------------- A ješ ě něco, a ť je am nějaká diakriika... Modul Tsearch2 poskyuje jednoduchou implemenaci fullexu. Je snadno rozšiřielný a díky omu, že se jedná o open-source projek, má i slibnou budoucnos.

Odkazy: hp://www.posgres.org Domovská sránka projeku hp://www.sai.msu.su/~megera/posgres/gis/search/v2/ Modul Tsearch2