Volltextsuche mit Oracle TEXT und Oracle Application

Volltextsuche mit
Oracle TEXT und
Oracle Application Express
... in 10 Schritten!
Oracle TEXT
Trefferliste
Erstellung einer TEXT-Anwendung
1. Schritt: Tabelle erstellen I
Erstellung einer TEXT-Anwendung
1. Schritt: Tabelle erstellen II
Erstellung einer TEXT Anwendung
1. Schritt: Tabelle erstellen (SQL)
SQL Workshop oder SQL*Plus ...
create table dokumente_tab(
id
number(10),
bezeichnung
varchar2(200),
dokument
blob,
mimetype varchar2(100),
datum
date,
constraint dokument_tab_pk primary key (id)
)
Erstellung einer TEXT-Anwendung
2. Schritt: Anwendung erstellen
1. Seite: Dokumente hochladen
–
Formular auf Tabelle DOKUMENT_TAB
2. Seite: Volltextrecherche
–
Leere Seite
Erstellung einer TEXT-Anwendung
3. Schritt: Formular „Dokumente hochladen“
Formular auf Tabelle
Elemente ...
–
–
P1_DATUM und P1_MIMETYPE löschen
P1_DOKUMENT vom Typ "Datei durchsuchen"
Erstellung einer TEXT-Anwendung
4. Schritt: Formular bearbeiten
Prozesse
–
–
Bestehende Prozesse löschen
(keine Berücksichtigung des Datei-Uploads)
Neuen PL/SQL Prozeß anlegen
Erstellung einer TEXT-Anwendung
5. Schritt: PL/SQL Prozess hinzufügen
declare
v_mimetype varchar2(100);
v_content blob;
begin
select blob_content, mime_type into v_content, v_mimetype
from wwv_flow_files where name=:P1_DOKUMENT;
insert into DOKUMENT_TAB
(id, bezeichnung, dokument, datum, mimetype)
values (
dokument_tab_seq.nextval, :P1_BEZEICHNUNG,
v_content, sysdate, v_mimetype
);
delete from wwv_flow_files where name=:P1_DOKUMENT;
end;
Erstellung einer TEXT-Anwendung
6.Schritt: Dokumente hochladen ...
Erstellung einer TEXT-Anwendung
7.Schritt: Volltextindex erstellen ...
Im SQL Workshop ...
create index idx_volltext
on dokument_tab (dokument)
indextype is ctxsys.context
parameters ('filter ctxsys.AUTO_FILTER')
Index wurde erstellt.
Erstellung einer TEXT-Anwendung
8. Schritt: Rechercheseite ...
Inhalte:
–
–
–
–
Textfeld zur Eingabe des Suchbegriffs
Schaltfläche zum Absenden der Abfrage
Bericht zur Anzeige der Trefferliste
"ID"-Spalte verstecken
select id, bezeichnung, datum, score(1) as relevanz
from dokument_tab
where contains(dokument, :P2_SUCHE, 1) > 0
Erstellung einer TEXT-Anwendung
8. Schritt: Rechercheseite ...
Erstellung einer TEXT-Anwendung
9. Schritt: Prozedur zum Download hinzufügen
create or replace procedure datei_herunterladen (p_id in number) is
v_mimetype dokument_tab.mimetype%TYPE;
v_datei dokument_tab.dokument%TYPE;
v_bezeichnung dokument_tab.bezeichnung%TYPE;
v_groesse number;
begin
select bezeichnung, mimetype, dokument, dbms_lob.getlength(dokument)
into v_bezeichnung, v_mimetype, v_datei, v_groesse
from dokument_tab where id = p_id;
owa_util.mime_header(nvl(v_mimetype,'application/octet'),false);
htp.p('Content-length:'|| v_groesse);
htp.p('Content-Disposition: inline');
owa_util.http_header_close;
wpg_docload.download_file(v_datei);
end;
grant execute on datei_herunterladen to public
Erstellung einer TEXT-Anwendung
10. Schritt: Download-Link hinzufügen
Berichtsspalte BEZEICHNUNG ...
Erstellung einer TEXT-Anwendung
Das fertige Ergebnis ...
Ergebnis ...
Und zum Verfeinern ...
"Keyword in Context" á la Google
SQL-Bericht ändern ...
select
id,
bezeichnung,
datum, score(1) as relevanz,
ctx_doc.snippet('IDX_VOLLTEXT', id, :P2_SUCHE) as kontext
from dokument_tab
where contains(dokument, :P2_SUCHE, 1) > 0
Und zum Verfeinern ...
"Keyword in Context" á la Google