我正在使用 oracle 10g,我认为我有contains
条款问题。
这是下面的查询。我有三个环境 dev、val 和 prod。
SELECT ABBRT.ID ,ABBRT.ABBREVIATION ,ABBRT.STATUSCODE ,ABBRT.FULLFORM ,APPLT.LABEL ,ABBRT.REMARK ,ABBRT.STATECODE
FROM ABBREVIATION ABBRT,APPLICABILITY APPLT,ABBREVIATION_APPLICABILITY AAT
WHERE 1=1
AND ABBRT.ID=AAT.ABBREVIATIONID
AND AAT.APPLICABILITYID=APPLT.ID
AND upper(ABBRT.STATECODE)='V'
AND ((contains(ABBRT.ABBREVIATION,'a\-d') > 0) OR (contains(ABBRT.FULLFORM,'a\-d') > 0))
ORDER BY ABBRT.ID
当我在 dev 上运行此查询工作正常时,我得到了预期的结果,但是当我在 val 和 prod 上运行此查询时,我没有得到预期的结果。
信息:
a\-d: when i search this data i am not getting result.
a\-in: when i search this data i am not getting result.
a\-e: when i search this data i am getting result.
a\-f: when i search this data i am getting result.
上述行为发生在所有 dev、val 和 prod 环境中。
不知道有没有问题。我想问为什么这是唯一的a\-d
问题a\-in
。为什么不是其他人。但这正在开发为什么。
val、dev 和 prod 的值相同。
ABBREVIATION
列FULLFORM
是clob
类型。ABBREVIATION
它具有他们在和FULLFORM
列上都使用过的上下文索引。
当我在 sql 上检查时,这个索引查询由 sql on dev 生成
CREATE INDEX "F280"."IDX_ABBR_ABBR" ON "F280"."ABBREVIATION" ("ABBREVIATION")
INDEXTYPE IS "CTXSYS"."CONTEXT" PARAMETERS ('replace stoplist empty_stoplist');
PARAMETERS
属性有这个值 replace stoplist empty_stoplist
。
当我在 val 和 prod 上检查 val 为 null 并且在 prod PARAMETERS SYNC 上(提交时)。
我试图通过删除并再次创建来重新创建索引。我还是失败了
我也在 val 上尝试了这个查询来同步,因为它在 dev 上,但我得到了错误。
询问:
CREATE INDEX "F280"."IDX_ABBR_ABBR" ON "F280"."ABBREVIATION" ("ABBREVIATION")
INDEXTYPE IS "CTXSYS"."CONTEXT" PARAMETERS ('replace stoplist empty_stoplist');
错误:
Error report:
SQL Error: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-11000: invalid keyword REPLACE
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 364
29855. 00000 - "error occurred in the execution of ODCIINDEXCREATE routine"
*Cause: Failed to successfully execute the ODCIIndexCreate routine.
*Action: Check to see if the routine has been coded correctly.
我也在 val 上尝试过这个索引,但它正在创建但没有反映
CREATE INDEX "F280"."IDX_ABBR_FULLFORM" ON "F280"."ABBREVIATION"
(
"FULLFORM"
)
INDEXTYPE IS "CTXSYS"."CONTEXT" PARAMETERS
(
'SYNC(on commit)'
);