如何使用Oracle在表上创建反向索引

时间:2011-03-27 21:07:03

标签: sql oracle full-text-search indexing

我有一个名为book的表,其中包含ISBN,Title和Description列。我一直在尝试使用以下命令在此表上创建倒排索引:

CREATE INDEX myindex ON book(description) INDEXTYPE IS CTXSYS.CONTEXT;

我一直在尝试使用以下查询进行查询:

  SELECT score(1), title 
    FROM book b
   WHERE CONTAINS(b.description, 'Huckleberry Finn', 1) > 0 
ORDER BY score(1) DESC;

每当我运行此查询时,即使查询

,也不会选择任何行
SELECT title, description
  FROM book
 WHERE description = 'Huckleberry Finn';

返回:

Title          description
------------------------------------
'Huckleberry'  'Huckleberry Finn'

我不确定我的查询有什么问题,这是我第一次尝试创建倒排索引,所以如果有人能告诉我查询的错误或其他方法,我真的很感激。

1 个答案:

答案 0 :(得分:7)

你有同步你的索引吗? 在较新的版本中,您可以构造索引,以便在提交时更新它。否则,您可能依赖于手动同步操作。

不要认为可以在事务中同步索引。

create index search_idx
  on ctx_demo (text)
  indextype is ctxsys.context
  parameters ('sync (on commit)')
/