web-dev-qa-db-ja.com

PL-SQLのcontains()はどのように機能しますか?

クエリでcontains()メソッドを使用して、多くの不要な結果を取得します。のようなものを使用するように言わないでください。これはハードコードされており、変更できませんでした。

15
Artic

Containsは、検索のためにテキストフィールドにインデックスを付ける「CONTEXTインデックス」を持つテキストフィールドで使用されます。標準的な使用法は次のとおりです(score演算子を使用して、containsの1とcontainsの1がscore句から返されるものを表示します。 _):

SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;

テーブルtable_nameのこのようなデータの場合

value  |  textField
-------|-----------------------------------------------
A      |   'Here is searchString.  searchString again.'
B      |   'Another string'
C      |   'Just one searchString'

そのクエリは返されます

2 A
1 C

つまり、containsはlikeに似ていますが、テキストフィールドで文字列が発生する回数をカウントします。投稿したクエリでの使用方法を含むを使用してリソースを見つけることができませんでしたが、dFullTextcarのインスタンスが少なくとも1つある行が返されるか、またはこのSQLに相当するもの:

Select * from blabla where dFullText like "%car%"

ここ は別のソースです。

17
rosscj2533

Oracle.com のこの例を参照してください

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; 
0
Padmarag