Day 26: Oracle Text


Learning In HomeOriginal Date: 7 Februari 2009

Oracle Text adalah fitur database Oracle yang menangani query yang berkaitan dengan teks. Sebelum menggunakan Oracle Text, aku memastikan user database telah memiliki role CTXAPP, dan berhak menjalankan isi package CTX_CLS, CTX_DDL, CTX_DOC, CTX_OUTPUT, CTX_QUERY, CTX_REPORT, dan CTX_THES.

Aku memiliki beberapa pilihan jenis index saat menggunakan Oracle Text. Untuk meng-index kolom yang terdiri atas teks dalam jumlah besar dan dalam format tertentu, misalnya HTML dan Work, aku dapat menggunakan index CONTEXT. Untuk meng-index teks yang tidak terlalu banyak dan dapat menyertakan kolom lain dalam pencarian, aku menggunakan index CTXCAT. Index CTXRULE dibangun berdasarkan query dari tabel lain. Index CTXXPATH dipakai untuk kolom bertipe XMLType yang menampung data XML.

Sebagai latihan pertama, aku akan menyimpan beberapa Microsoft Word (DOC) ke dalam sebuah folder. Index berjenis CONTEXT mendukung pencarian teks terhadap file yang disimpan di luar tabel seperti ini. Aku mulai dengan membuat data storage preference yang berisi lokasi penyimpan file DOC:


BEGIN
  ctx_ddl.
    create_preference(
      'storage_doc_attachment', 
      'FILE_DATASTORE');
  ctx_ddl.
    set_attribute(
      'storage_doc_attachment', 
      'PATH', 
      'C:\DOC');
END;
/

Karena format dokumen yang aku pakai adalah format Microsoft Word (DOC), maka aku memakai filtering INSO_FILTER yang juga mendukung PDF dan MacWriteII. Dengan demikian, perintah untuk membuat index CONTEXT dalam latihan-ku ini akan menjadi:


CREATE INDEX IDX_DOC_ATTACHMENT ON TBL_ATTACHMENT(ATTACHMENT) INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('DATASTORE storage_doc_attachment FILTER ctxsys.inso_filter');

Lalu, aku menempatkan beberapa file Microsoft Word (DOC) ke folder C:\DOC, kemudian menambahkan record baru ke tabel serta me-rebuild index:


INSERT INTO TBL_ATTACHMENT 
  VALUES (1, 'document1.doc');
INSERT INTO TBL_ATTACHMENT 
  VALUES (2, 'document2.doc');
INSERT INTO TBL_ATTACHMENT 
  VALUES (3, 'document3.doc');
ALTER INDEX IDX_DOC_ATTACHMENT 
  REBUILD;

Sekarang, aku siap untuk menguji Oracle Text, misalnya dengan query berikut:


SELECT * FROM TBL_ATTACHMENT WHERE CONTAINS(attachment, 'exam') > 0;

Salah satu kelebihan Oracle Text ketimbang query dengan operator LIKE adalah kemampuannya mengenali kata. Query di atas hanya akan mencari dokumen Word yang mengandung kata “exam” saja, tidak termasuk “examination”.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: