Oracle Text:CONTAINS没有返回任何值,即使它们存在于索引中

时间:2014-11-29 15:37:43

标签: sql oracle oracle-text

我是Oracle的新手,我创建了一个使用Oracle Text在索引上执行文本搜索的基本应用程序。

我的表格结构如下:

[  Table: Stores ]
------------------
store_id        PK
name           VC2
description    VC2

我的描述字段然后有一个指定的索引:

CREATE INDEX stores_desc_ctx_idx  ON stores(description) INDEXTYPE IS ctxsys.context;

我在SQLDeveloper中验证了INDEX存在于我的Index选项卡下,但是当我运行查询时,返回的结果总是为null,即使我可以清楚地看到任何给定行中的数据与输入字符串匹配。 / p>

让说明A:

Local GAME store in Plymouth, selling all the latest titles as well as legacy ones!

让说明B:

Local Morrison's store in Plymouth, selling all the food you could possibly want!

让查询

SELECT * FROM stores WHERE contains(description, 'GAME') > 0;

我希望查询的结果返回描述A,但是没有返回结果......我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

面向类似问题的未来用户。

SQLDeveloper以某种方式使我的INDEX无效,我只需导航到INDEX选项卡,右键单击并选择" Rebuild"。这样做会重新验证INDEX,现在代码正常工作。

答案 1 :(得分:0)

您可以使用“参数”语法和“创建索引”语句指定数据库系统何时更新全文索引。 例如,以下语句创建一个在每次提交后更新的全文索引。

CREATE INDEX stores_desc_ctx_idx ON stores(description) INDEXTYPE IS ctxsys.context PARAMETERS ('SYNC(ON COMMIT)');

有关所有可能的“SYNC”选项,请参阅oracle文档