- Dasarnya adalah ekspresi query.

- Oracle mengembalikan semua documen (index sebelumnya) dengan relevan score dalam setiap dokumen. Score dapat dipakai untuk mengurutkan dokumen-dokumen sebagai kumpulan hasil.

Melakukan Query dengan operator CONTAINS

Operator contains dapat digunakan jika type index yang dibuat adalah Context. Dengan operator contains, kita dapat menggunakan sebuah operator untuk mendefinisikan kriteria pencarian kita. Operator ini mengijinkan pencarian logical, proximity, fuzzy, stemming, thesaurus, dan wildcard.

Contoh sql contains :

Score operator mengembalikan nilai setiap hitlist dan score dapat diurutkan dari score tertinggi dari dokumen ke score terendah.

SELECT SCORE(1), title from news

WHERE CONTAINS(text, ‘oracle’, 1) > 0

ORDER BY SCORE(1) DESC;

Jika ingin menambah kriteria filtering dapat ditambahkan dalam klausa where.

Contoh PL/SQL contains :

Kita dapat menggunakan cursor untuk fetch hasil dari query. PL/SQL ini adalah digunakan untuk mencari semua artikel dari tabel NEWS yang mengandung kata “oracle” dan ditampilkan judul news dan 10 score tertinggi.

declare

rowno number := 0;

begin

for c1 in (SELECT SCORE(1) score, title FROM news

WHERE CONTAINS(text, ‘oracle’, 1) > 0

ORDER BY SCORE(1) DESC)

loop

rowno := rowno + 1;

dbms_output.put_line(c1.title||’: ‘||c1.score);

exit when rowno = 10;

end loop;

end;

Melakukan Query dengan operator CATSEARCH

Operator Catsearch digunakan jika type index yang dibuat adalah CTXCAT. Index type CTXCAT pilihan yang sangat baik jika aplikasi kita menyimpan short text fragment dalam kolom text dan berasosiasi dengan informasi lain dalam kolom yang berhubungan.

Misalnya, aplikasi pelayanan online mempunyai tabel yang menyimpan deksripsi item dalam kolom text dan berasosiasi informasi seperti tanggal dan harga pada kolom lain. Kita dapat membuat index b-tree dalam satu atau lebih dalam kolom ini dengan menggunakan CTXCAT. Hasil dari catsearch adalah mencari index CTXCAT.

Operator yang tersedia untuk query CATSEARCH adalah limited sampai operasi logical seperti AND dan OR. Operator yang dapat dipakai untuk kriteria terstruktur adalah lebih dari, kurang dari, sama dengan, BETWEEN, dan IN.

Ciri dari operator catsearch adalah terdapat klausa struktur. Kolom dalam structured expression harus memiliki korespondensi sub-index.

Contoh sql CATSEARCH :

SELECT FROM auction WHERE CATSEARCH(title, ‘camera’, ‘category_id=99 order by

bid_close desc’)> 0;

category_id dan bid_close mempunyai sub-index dalam index ctxcat untuk tabel auction.

CATSEARCH pada PL/SQL dapat menggunakan cursor sama dengan operator contains.

Melakukan Query dengan operator MATCHES

Operator Matches digunakan jika index yang dibuat bertype CTXRULE. Index CTXRULE adalah index dalam kumpulan dari query yang mendefinisikan klasifikasi kita.

Misalnya, jika kita memiliki input dokumen dalam bentuk stream dan membutuhkan untuk dirouted berdasarkan isi, kita dapat membuat kumpulan query yang mendefinisikan kategori kita. Kita membuat query seperti baris dalam kolom text.

Contoh sql MATCHES :

Query matches mencari semua baris dalam query tabel yang cocok dari sebuah dokumen yang diberikan. Asumsikan querytable memiliki index CTXRULE.

SELECT classification FROM querytable WHERE MATCHES(text, ‘Smith is a common name in the United States’) > 0;

Contoh PL/SQL MATCHES :

PROMPT Populate the category table based on newsfeed articles

PROMPT

set serveroutput on;

declare

mypk number;

mytitle varchar2(1000);

myarticles clob;

mycategory varchar2(100);

cursor doccur is select pk,title,articles from newsfeed;

cursor mycur is select category from profiles where matches(rule, myarticles)>0;

cursor rescur is select category, pk, title from results order by category,pk;

begin

dbms_output.enable(1000000);

open doccur;

loop

fetch doccur into mypk, mytitle, myarticles;

exit when doccur%notfound;

open mycur;

loop

fetch mycur into mycategory;

exit when mycur%notfound;

insert into results values(mycategory, mypk, mytitle);

end loop;

close mycur;

commit;

end loop;

close doccur;

commit;

end;

Case-Sensitive Searching

Oracle Text melayani case insensitive untuk word dan ABOUT query.

WORD QUERY

Word query adalah case sensitive secara default. Kita dapat mengaktifkan pencarian yang case sensitive dengan mengaktifkan attribut mixed_case pada BASIC_LEXER index preference.

Stopwords dan Case-Sensitivity

Jika case-sensitivity diaktifkan untuk word query dan query dalam phrase tersebut mengandung stopwords dan non-stopwords, kita harus menspesifikan case yang benar untuk stopwords. Contoh phrase dari “This boy talks to that girl”, kita asumsikan this adalah stopword.

ABOUT QUERY

About query memberikan hasil yang terbaik ketika query diformulasikan dengan case yang tepat karena normalisasi dari query kita berdasarkan pengetahuan catalog yang case-sensitive. Contohnya turkey didefinisikan sebagai burung sedang Turkey adalah negara.