我有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搜索