2016-11-29 3 views
4

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

答えて

0

Oracle Text索引は、通常の言葉ではなく、文字列を検索します。

「Martin Luther King Jr.」の「martin」を検索するためにワイルドカードは必要ありません。しかし、 "MARTINKO3"で "martin"を検索するには、ワイルドカードである必要があります。

変更し、これにCONTAINS述語:

CONTAINS(c.TXT_SEARCH_FULL_NAME_ALL, 'martin%', 1) > 0; 

私は、Oracle 12.2でテストを実行し、テーブルまたはマテリアライズド・ビューを使用しての間の行動の違いを見つけることができませんでした。おそらく、テストミスや非常に特殊なバグがあったため、システムでテキストインデックスが異なるように動作する可能性があります。

関連する問題