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