我有Oracle DB的问题 – 在物化视图上通过CONTAINS()搜索后,域索引返回零行.我看到物化视图充满了数据,我还使用过程ctx_ddl.sync_index()进行域索引同步.
什么有用:
>创建表
>插入数据
>创建域索引
> SYNC DOMAIN INDEX
>通过包含找到行 – 返回行
什么不起作用:
>创建表
>插入数据
>创建物化视图
>刷新材料化视图
>在物化视图中创建域索引
>物化视图中的同步域索引
>在物质化视图中查找包含行数 – 返回零行(类似于%的工作量)
如果没有物化视图,为什么一切正常?
这是我的查询(您可以复制粘贴并在您的oracle db中尝试):
– 创建表
创建表“PCOUNTERPARTY”(“ID_COUNTERPARTY”编号(10,0),“TXT_SEARCH_FULL_NAME”NVARCHAR2(260),CONSTRAINT“PCOUNTERPARTY_PK”主键(“ID_COUNTERPARTY”));
–INSERT DATA.
插入PCOUNTERPARTY(ID_COUNTERPARTY,TXT_SEARCH_FULL_NAME)值(1184,’MARTINKO3′);
– 创建物化视图
创建物质化视图m_pcounterparty
如
选择c.ID_COUNTERPARTY,CAST(c.TXT_SEARCH_FULL_NAME AS varchar2(260 CHAR))作为txt_search_full_name_all
来自PCOUNTERPARTY c;
– 创建域索引
在m_pcounterparty上创建索引IDXM_1_pcounterparty(TXT_SEARCH_FULL_NAME_ALL)indextype是ctxsys.context PARAMETERS(‘SYNC(ON COMMIT)’);
– 物化视图的刷新
EXECUTE DBMS_MVIEW.REFRESH(‘M_PCOUNTERPARTY’);
– 索引的刷新
exec ctx_ddl.sync_index(‘IDXM_1_pcounterparty’);
– 在物化视图中搜索
选择
TXT_SEARCH_FULL_NAME_ALL
从
M_PCOUNTERPARTY c
哪里
CONTAINS(c.TXT_SEARCH_FULL_NAME_ALL,’martin’,1)> 0; – 返回零,这是问题
–c.TXT_SEARCH_FULL_NAME_ALL LIKE’%MARTIN%’; – 返回行但我们想通过CONTAINS搜索