Как работает contains () в PL-SQL?

есть много ненужных результатов, используя метод contains () в моем запросе. Не говори мне использовать что-то подобное. Это жестко и не может быть изменен.

2 ответов


Contains используется в текстовых полях с "индексом контекста", который индексирует текстовое поле для поиска. Стандартное использование выглядит так (используя 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

так содержит похож на нравится, но будет считать, сколько раз строка возникает в текстовом поле. Я не смог найти ресурс, который содержит то, как он используется в запросе, который вы опубликовали, но я думаю, что это вернет строки, где dFullText имеет по крайней мере один экземпляр car в нем, или эквивалент этого sql:

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

здесь другой источник.


посмотреть в этом примере от 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;