1. 程式人生 > >Oracle全文索引之六 附:CONTAINS函式

Oracle全文索引之六 附:CONTAINS函式

oracle 中對於 CONTAINS 函式的用法

  • 查詢住址在北京的學生

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'beijing' )
    

remark: beijing是一個單詞,要用單引號括起來。

  • 查詢住址在河北省的學生

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, '"HEIBEI province"' )
    

remark: HEBEI province是一個片語,在單引號裡還要用雙引號括起來。

  • 查詢住址在河北省或北京的學生

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
    

remark: 可以指定邏輯操作符(包括 AND ,AND NOT,OR )。

  • 查詢有 ‘南京路’ 字樣的地址

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'nanjing NEAR road' )
    

remark: 上面的查詢將返回包含 ‘nanjing road’,’nanjing east road’,’nanjing west road’ 等字樣的地址。A NEAR B,就表示條件: A 靠近 B。

  • 查詢以 ‘湖’ 開頭的地址

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, '"hu*"' )
    

remark: 上面的查詢將返回包含 ‘hubei’,’hunan’ 等字樣的地址。記住是 *,不是 %。

  • 類似加權的查詢

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
    

remark: ISABOUT 是這種查詢的關鍵字,weight 指定了一個介於 0~1之間的數,類似係數(我的理解)。表示不同條件有不同的側重。

  • 單詞的多型查詢

    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
    

remark: 查詢將返回包含 ‘street’,’streets’等字樣的地址。
對於動詞將返回它的不同的時態,如:dry,將返回 dry,dried,drying 等等。

  • 詞查詢示例

      詞查詢是對輸入到 CONTAINS 運算子中單引號間的精確單詞或短語的查詢。在以下示例中,我們將查詢文字列中包含 oracle 一詞的所有文件。每行的分值由使用標籤 1 的 SCORE 運算子選定:

    SELECT SCORE(1) title from news WHERE CONTAINS(text,'oracle',1)> 0;
    

      在查詢表示式中,可以使用 AND 和 OR 等文字運算子來獲取不同結果。還可以將結構性謂詞新增到 WHERE 子句中。可以使用 count(*)、CTX_QUERY.COUNT_HITS 或 CTX_QUERY.EXPLAIN 來計算查詢的命中 (匹配) 數目。

  • ABOUT查詢示例

      在所有語言中,ABOUT查詢增加了某查詢所返回的相關文件的數目。在英語中,ABOUT 查詢可以使用索引的主題片語件,該元件在預設情況下建立。這樣,運算子將根據查詢的概念返回文件,而不是僅依據所指定的精確單詞或短語。例如,以下查詢將查詢文字列中關於主題 politics 的所有文件,而不是僅包含 politics 一詞的文件:

    SELECT SCORE(1) title from news WHERE CONTAINS(text, 'about(politics)', 1) > 0;