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

1 sql oracle indexing full-text-search

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

CREATE INDEX myindex ON book(description) INDEXTYPE IS CTXSYS.CONTEXT;
Run Code Online (Sandbox Code Playgroud)

我一直试图用下面的查询来查询它:

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

每当我运行此查询时,即使查询也没有选择任何行

SELECT title, description
  FROM book
 WHERE description = 'Huckleberry Finn';
Run Code Online (Sandbox Code Playgroud)

收益:

Title          description
------------------------------------
'Huckleberry'  'Huckleberry Finn'
Run Code Online (Sandbox Code Playgroud)

我不确定我的查询有什么问题,这是我第一次尝试创建一个倒置索引,所以如果有人能告诉我我的查询有什么问题或其他方法,我会真的欣赏它.

Gar*_*ers 7

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

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

create index search_idx
  on ctx_demo (text)
  indextype is ctxsys.context
  parameters ('sync (on commit)')
/
Run Code Online (Sandbox Code Playgroud)