19

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

4

2 に答える 2

23

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

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に似ていますが、テキストフィールドで文字列が出現する回数をカウントします。dFullText投稿したクエリで使用されている方法を含むを使用してリソースを見つけることができませんでしたが、少なくとも1つのインスタンスが含まcarれている行、またはこのSQLと同等の行が返されると思います。

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

ここに別の情報源があります。

于 2010-03-19T19:32:01.557 に答える
1

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; 
于 2010-03-12T07:21:34.527 に答える