Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tìm kiếm văn bản Oracle trên nhiều bảng và kết hợp

Tôi thường giải quyết các tìm kiếm toàn văn bản trên nhiều cột trên các bảng khác nhau bằng cách hiện thực hóa dạng xem XML có cấu trúc về chúng và sau đó tạo chỉ mục trên toàn bộ XML.

Giải pháp này là chung và cũng cho phép bạn tự do tìm kiếm:toàn bộ chế độ xem hoặc chỉ một đường dẫn con. Hạn chế là quản lý việc làm mới một MV thường không thể được làm mới nhanh; nhưng cập nhật chỉ mục toàn văn bản cũng thường không theo thời gian thực, vì vậy bạn có thể lên lịch.

-- 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. Tại sao Oracle SQL giải quyết được sự mơ hồ một cách bí ẩn trong một kết hợp và không trong những liên kết khác

  2. SQL - Trả về các hàng có hầu hết các kết quả phù hợp với cột

  3. Một kết nối với Oracle

  4. Tại sao tôi không thể truyền oracle BLOB từ Java Blob gốc

  5. oratop