Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pencarian teks Oracle di beberapa tabel dan bergabung

Saya biasanya menyelesaikan pencarian teks lengkap pada beberapa kolom pada tabel yang berbeda dengan mewujudkan tampilan XML terstruktur dari mereka dan kemudian membuat indeks pada seluruh XML.

Solusi ini generik dan juga memberi Anda kebebasan dalam pencarian:seluruh tampilan atau hanya subpath. Kekurangannya adalah mengatur refresh MV yang biasanya tidak bisa di-refresh dengan cepat; tetapi pembaruan indeks teks lengkap biasanya juga tidak dalam waktu nyata, jadi Anda bisa menjadwalkannya.

-- Crating the view
CREATE MATERIALIZED VIEW fulltext_helper
NOLOGGING
BUILD DEFERRED
REFRESH COMPLETE ON DEMAND
AS
SELECT 
   a.dob, -- we don't need to fulltext on him
   XMLELEMENT(helper,
     XMLFOREST(a.emp_no AS emp_no, 
              a.dept_no AS dept_no, 
              b.emp_name AS emp_name)
   ) AS indexme
FROM v_depts a 
LEFT OUTER JOIN employee_details b
ON (a.emp_no = b.emp_no);

-- Creating the index
BEGIN
    ctx_ddl.create_preference('fulltext_helper_lexer', 'BASIC_LEXER');
    ctx_ddl.create_preference('fulltext_helper_filter', 'NULL_FILTER');
END;
/
CREATE INDEX fulltext_helper_index ON fulltext_helper (indexme)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS (
    'DATASTORE CTXSYS.DIRECT_DATASTORE
     LEXER fulltext_helper_lexer
     FILTER fulltext_helper_filter');

-- Searching the whole data
SELECT * FROM fulltext_helper
WHERE contains(indexme, '{abc} INPATH (/helper)') > 0;

-- Searching only on "empno"
SELECT * FROM fulltext_helper
WHERE contains(indexme, '{abc} INPATH (/helper/emp_no)') > 0;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batasan ORACLE untuk mengizinkan Nilai Null, JIKA

  2. Tutorial Formulir dan Laporan Oracle 9i, Oracle 10g dan Oracle 11g Developer Suite

  3. Memulai Aplikasi Oracle Express-APEX

  4. Mengapa pembaruan massal templat hibernasi ini tidak berfungsi

  5. Periksa kata sandi pengguna valid atau tidak di plsql