A CONTAINS query optimized for response time provides a fast solution for when you need the highest scoring documents from a hitlist.
The following example returns the first twenty hits to standard out. This example uses the FIRST_ROWS(n) hint and a cursor.
declare
cursor c is
select /*+ FIRST_ROWS(20) */ title, score(1) score
from news where contains(txt_col, 'dog', 1) > 0 order by score(1) desc;
begin
for c1 in c
loop
dbms_output.put_line(c1.score||':'||substr(c1.title,1,50));
exit when c%rowcount = 21;
end loop;
end;
/
Besides using query hints, there are other factors that can influence query response time such as:
Collection of table statistics
Memory allocation
Sorting
Presence of LOB columns in your base table
Partitioning
Parallelism
The number term expansions in your query