gpt4 book ai didi

oracle - 物化 View 中的域索引返回零行

转载 作者:行者123 更新时间:2023-12-01 06:05:16 32 4
gpt4 key购买 nike

我在使用 Oracle DB 时遇到问题 - 在物化 View 上通过 CONTAINS() 搜索后,域索引返回零行。我看到物化 View 充满了数据,我还使用过程 ctx_ddl.sync_index() 进行域索引同步。

什么效果好:

  • 创建表
  • 插入数据
  • 创建域索引
  • 同步域名索引
  • 按包含查找行 - 返回行

  • 什么不起作用:
  • 创建表
  • 插入数据
  • 创建物化 View
  • 刷新实体化 View
  • 在实体化 View 中创建域索引
  • 物化 View 中的同步域索引
  • 在实体化 View 中按包含查找行 - 返回零行 (如 %TERM% 有效)

  • 为什么没有物化 View 一切正常?
    这是我的查询(您可以复制粘贴并在您的 oracle 数据库中尝试):

    --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



    最佳答案

    Oracle Text 索引通常搜索单词,而不是字符串。

    在“Martin Luther King Jr.”中搜索“martin”不需要通配符。但是在“MARTINKO3”中搜索“martin”需要通配符。

    更改 CONTAINS谓词:

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

    我在 Oracle 12.2 上运行了测试,但在使用表或物化 View 之间找不到任何行为差异。也许有一个测试错误或一个非常具体的错误导致文本索引在您的系统上表现不同。

    关于oracle - 物化 View 中的域索引返回零行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40864581/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com