DBXplorer Systém pro vyhledávání nad relačními databází podle klíčových slov. zpracovala Margarita Vishnyakova
Úvod V Internetových vyhledávačich je populární vyhledávání podle klíčových slov. Vyhledávání na tradičních systémech řízení databáz se uskutečňuje prostřednictvím vlastních aplikaci, které jsou úzce svázána s databázovým schématem. Tradiční systémy pro správu databází nepodporují vyhledávání podle klíčových slov. Cílem je umožnit takové vyhledávání, aniž by bylo nezbytně nutné, aby uživatelé věděli schémata příslušných databází.
Náhled na DBXplorer IR techniky použivají Invertované seznamy (Inverted Lists), což je ekvivalent s Tabulkami symbolů v databazích. Tabulka symbolů udržuje v sobě informaci o klíčových slovech na zvolené urovní zrnitosti(granularity), tj. pro každe klíčové slovo pamatuje místo vyskýtu. DBXplorer podporuje konjunktivní dotazy podle klíčových slov, tj. vyhledávány pouze dokumenty, které obsahují všechny klíčová slova dotazu. To je ve skutečnosti, nejvíce používané paradigma pro internetové vyhledávání.
Přehled DBXplorer Takové vyhledávání vyžaduje Publikace předzpracovávaný krok, který umožňuje vyhledávání podle klíčových slov pomocí stávení tabulky symbolů a souvisejících struktur Hledání krok, ve kterém vybíra odpovídající řádky z publikovaných databází
Přehled DBXplorer - Publikace Databáze (nebo požadovaná část) je připravená pro vyhledávání pomocí následujících kroků. Databáze je identifikována, spolu se souborem tabulek a sloupců v databázi, které mají být zveřejněny. Pomocné tabulky jsou vytvořeny pro podporu vyhledávání podle klíčového slova. Nejdůležitější je struktura tabulky symbolů S, která se používá při hledání, abysme mohli efektivně určit umístění klíčových slov dotazu v databázi (tj. tabulky, sloupců, řádků, kde se vyskytují).
Přehled DBXplorer - Hledání Na dotaz sestávající z klíčových slov odpovída takto: Tabulka symbolů je prohledavana k určení tabulek a sloupců resp. řádků z databáze, které obsahují klíčová slova Všechny potenciální podmnožiny tabulek v databázi, které pri spojení (join), můžou obsahovat řádky, které mají všechny klíčová slova, jsou identifikovány a vyjmenovany resp. očislovany. Pro každé vyjmenované spojovácí stromy, je postaven SQL výraz.
Design tabulky symbolů Pouze přesný problém, tj., kde každé klíčové slovo v dotazu musí odpovídat hodnotě atributu v řádku tabulky. Tabulka symbolů udržuje v sobě informaci o klíčových slovech na zvolené urovní zrnitosti(granularity), tj. pro každe klíčové slovo pamatuje místo vyskýtu. Sloupcová úroveň zrnitostí (Pub-Col) kde pro každé klíčové slovo tabulka symbolů udržuje seznam všech databázových sloupců (tj. seznam table.column), které jej obsahují Buňková úroveň zrnitostí (Pub-Cell), kde pro každé klíčové slovo tabulka symbolů udržuje seznam databázových buněk (tj. seznam table.column.rowid), které jej obsahují.
Design tabulky symbolů - faktory Požadavky na prostor a čas Čas: Pub-Col trvá méně času na vybudování Velikost: Pub-Col jsou menší než Pub-Cell, jelikož opakování klíčového slova ve sloupci nevede ke zvýšení počtů položek v případě Pub-Col Výkon vyhledávání Závisí na efektivní výroby a provádění SQL Pub-Cell vrací větší počet SQL příkazů, než Pub-Col Snadnost údržby Vložení / aktualizace: potřebné pro vložení odlišných od starých hodnot v případě Pub-Col, zatímco v Pub-Cell je potřeba pro každé aktualizaci / vložení Stejně pro mazání
Ukládání tabulky symbolů Ukládáme tabulku symbolů (pub- col) v databázi (hash klíčových slov, sloupec Id) FK Komprese (Cizí Klíč, Foreign Key) Existuje-li cizí-klíčový vztah mezi C1 a C2, skladovat pouze C1 CP Komprese Rozdělit H do minimálního počtu bipartitních klik (klika je nějaký bipartitní podgraf H s maximálním počtem hran) Komprimovat každou kliku. Ukládání v tabulce symbolů (pub- cell) v databázi jako (hash klíčových slov, seznam všech Buňka Id) Nekomprimováná hashovácí tabulka Komprimováná hashovácí tabulka ColumnsMap tabulka v2v2 v3v3 v4v4 c1c1 c2c2 x
Hledání – Vyčet spojovácích stromů Najdeme množinu databázových tabulek, které obsahují alespoň jedno z klíčových slov dotazu Vyčet stromů Všechny potenciální podmnožiny tabulek v databázi, které pri spojení (join), můžou obsahovat řádky, které mají všechny klíčová slova, jsou identifikovány a vyjmenovany. Join Trees Nechť MatchedTables je množina databázových tabulek, které obsahují alespoň jedno z klíčových slov. Pokud schéma grafu G je neorientovaný graf, pak spojovací strom(join tree) je podstrom G, takový že: (a) listy patří k MatchedTables (b) polečně, listy obsahují všechna klíčová slova v dotazu keywords
Hledání – Určení odpovídajících řadek Vstup do tohoto závěrečného vyhledávácího kroku je výčet join stromů. Každý strom je pak mapován na jeden příkaz SQL, který se připojí tabulky, jak je uvedeno ve stromu, a vybere ty řádky, které obsahují všechna klíčová slova. Získané řádky jsou seřazeny před výstupem. Řádky seřazeny podle počtu tabulek zúčastněných ve spojení (stejné jako když klíčová slova se vyskytují blízko sebe v dokumentech, potom mají vyšší hodnocení) Join Trees
Obecné shody – Token shody Token shody - klíčové slovo v dotazu se shoduje pouze na znaku nebo podřetězecu hodnoty atributu (např. načtení řádky adresy určením pouze názvu ulice). Pub-Prefix metoda B + strom indexy lze použít k načtení řádků, jejichž buňky shodují na daném prefixu řetězce Tato klauzule je tvaru WHERE T.C LIKE ‘P%K%’ Při publikování databáze, pro každé klíčové slovo K, vstup (hash (K), TC, P) je uložen v tabulce symbolů, jestliže existuje řetězec ve sloupci TC, které Obsahuje symbol K Má prefix P
Obecné shody – Token shody Database table T Pub-Prefix table Nechť hash hodnoty hledanych sad symbolů ('string', 'koule' a 'round') jsou 1, 2 a 3 RowIdC 1this is a string 2this string 3this is a ball 4no string 5any ball is round Zvažte, hledání klíčových slov "string" Pub-Prefix tabulky vrací předpony "th" a "no" a bude obsahovat následující SQL (T.C LIKE ‘th%string%’) OR (T.C LIKE ‘no%string%’)
Zavěr DBXplorer používá alternativní tabulky symbolů pro umístění klíčových slov v databázi. DBXplorer podporuje přesnou shodu a zobecněnou shodu až do určité míry.