0

我对 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 存在于我的索引选项卡下,但是当我运行查询时,返回的结果始终为空,即使我可以清楚地看到任何给定行中的数据与输入字符串匹配。

让描述 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,但是没有返回结果......我在这里做错了什么?

4

2 回答 2

1

对于面临类似问题的未来用户。

SQLDeveloper 以某种方式使我的 INDEX 无效,我只是导航到 INDEX 选项卡,右键单击并选择“重建”。这样做重新验证了 INDEX,代码现在可以按预期工作。

于 2014-11-29T16:03:30.767 回答
0

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

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

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

于 2015-01-19T17:21:38.247 回答