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

Sql Oracle Text:CONTAINS不返回任何值,即使它们存在于索引中,sql,oracle,oracle-text,Sql,Oracle,Oracle Text,我对Oracle非常陌生,我创建了一个基本应用程序,它使用Oracle文本对索引执行文本搜索 我的表格结构如下: [ Table: Stores ] ------------------ store_id PK name VC2 description VC2 “我的描述”字段随后有一个索引: CREATE INDEX stores_desc_ctx_idx ON stores(description) INDEXTYPE IS ctxsys.con

我对Oracle非常陌生,我创建了一个基本应用程序,它使用Oracle文本对索引执行文本搜索

我的表格结构如下:

[  Table: Stores ]
------------------
store_id        PK
name           VC2
description    VC2
“我的描述”字段随后有一个索引:

CREATE INDEX stores_desc_ctx_idx  ON stores(description) INDEXTYPE IS ctxsys.context;
我已经在SQLDeveloper中验证了索引存在于我的索引选项卡下,但是当我运行查询时,返回的结果总是空的,即使我可以清楚地看到任何给定行中的数据与输入字符串匹配

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

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


SQLDeveloper以某种方式使我的索引无效,我只是导航到索引选项卡,右键单击并选择“重建”。执行此操作将重新验证索引,代码现在可以按预期工作。

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

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

有关所有可能的“同步”选项,请参见oracle文档

这些索引必须在表更改后手动同步。重建也会做同样的事情,虽然效率可能会低一些。CTX_DDL.SYNC_INDEX应该做。谢谢Jon,我想我应该在我的后触发器中做这件事??我不确定,我没有很多实践经验。在触发器中运行DDL可能会导致一些并发问题。我不确定最好的做法是什么。也许是一个计划好的作业,或者是在一个大批量加载的末尾?明白了,我会读更多,谢谢你的帮助:)