Oracle DBドメイン索引に問題があり、マテリアライズド・ビューでCONTAINS()を検索した後にゼロ行が戻されます。マテリアライズド・ビューにはデータが入っていますが、ドメイン索引同期にはプロシージャctx_ddl.sync_index()も使用しました。良い作品は何マテリアライズド・ビュー内のドメイン索引でゼロ行が返される
:BY
- TABLE、CREATE
- INSERT DATA
- DOMAINのCREATE INDEXを
- SYNCドメイン索引
- FIND行が含まれています - RETURNのROWS
どう機能していない:TABLE、CREATE
- INSERT DATA
- VIEWに、CREATE MATERIALIZED
- REFRESHは、マテリアライズド・ビュー
- SYNC DOMAIN INDEX INがMATERIALIZED VIEWを DOMAIN INDEX INはマテリアライズド・ビューCREATE
- マテリアライズド・ビューに含まれる行の結果 - 戻り値ゼロの行(LIKE%TERM%WORKS)
マテリアライズドビューなしですべて正常に動作するのはなぜですか? はここに私のクエリである(あなたがコピー&ペーストし、Oracle DBにそれを試すことができます):
--create table CREATE TABLE "PCOUNTERPARTY" ("ID_COUNTERPARTY" NUMBER(10,0), "TXT_SEARCH_FULL_NAME" NVARCHAR2(260), CONSTRAINT "PCOUNTERPARTY_PK" PRIMARY KEY ("ID_COUNTERPARTY"));
--INSERT DATA. Insert into PCOUNTERPARTY (ID_COUNTERPARTY,TXT_SEARCH_FULL_NAME) values (1184,'MARTINKO3');
--create materialized view CREATE MATERIALIZED VIEW m_pcounterparty AS SELECT c.ID_COUNTERPARTY, CAST(c.TXT_SEARCH_FULL_NAME AS varchar2(260 CHAR)) as txt_search_full_name_all FROM PCOUNTERPARTY c;
--create domain index create index IDXM_1_pcounterparty on m_pcounterparty(TXT_SEARCH_FULL_NAME_ALL) indextype is ctxsys.context PARAMETERS ('SYNC (ON COMMIT)');
--refresh of materialized view EXECUTE DBMS_MVIEW.REFRESH('M_PCOUNTERPARTY'); --refresh of index exec ctx_ddl.sync_index('IDXM_1_pcounterparty');
--search in materialized view SELECT TXT_SEARCH_FULL_NAME_ALL from M_PCOUNTERPARTY c WHERE CONTAINS(c.TXT_SEARCH_FULL_NAME_ALL, 'martin', 1) > 0; --return ZERO and THIS IS PROBLEM --c.TXT_SEARCH_FULL_NAME_ALL LIKE '%MARTIN%';-- return rows but we want search thru CONTAINS