当前位置: 首页 > 面试题库 >

CONTAINS不适用于Oracle Text

子车新立
2023-03-14
问题内容

我在执行此查询时遇到问题。

SELECT * FROM gob_attachment 
WHERE CONTAINS (gob_a_document, 'java') > 0

给我

ORA-29902: error in executing ODCIIndexStart() routine
ORA-20000: Oracle Text error: 
ORA-00942: table or view does not exist

29902. 00000 -  "error in executing ODCIIndexStart() routine"
*Cause:    The execution of ODCIIndexStart routine caused an error.
*Action:   Examine the error messages produced by the indextype code and
       take appropriate action.

经过一番谷歌搜索后,我发现问题可能出在索引上,但是当我查看表和索引时,对我来说似乎还可以。

创建索引脚本看起来像这样

CREATE INDEX FTSI_GOB_A_DOCUMENT 
 ON GOB_ATTACHMENT (GOB_A_DOCUMENT) 
 INDEXTYPE IS CTXSYS.CONTEXT;

唯一令我感到奇怪的是,当我在SQL
Developer中查看“表”属性中的“编辑表”时,可以看到索引的“操作状态”为FAILED。有谁知道这意味着什么?也许是数据库权利?

当我使用时它也能正常工作

dbms_lob.instr(gob_a_document, utl_raw.cast_to_raw('java')) > 0

代替 contains

感谢您的任何建议

PS与我之前的问题有关:Oracle
DBMS_LOB.INSTR和CONTAINS性能

更新

重新创建索引并进行一些操作后,我发现我可以执行上面的查询,但是它不会返回任何内容。

如果尝试使用CONTAINS(gob_a_document, '%'),结果将是26行,并且不知道查询是通过哪个键选择它们的(至少我没有发现明显的地方,我将对其进行更多调查)。问题可能在于我们正在使用Oracle
10g并存储版本11支持的DOCX文件。


问题答案:

“索引的运行状态为失败”

好的,这意味着您的CREATE INDEX语句失败。您收到错误消息了吗?我想答案是肯定的,但您错过了。因此,您需要做的是:

  • 下降指数
  • 重新运行CREATE INDEX语句
  • 如果抛出错误,请记下原因并修复

如果不是很明显,则另一个语句将运行,因为它没有尝试使用您的CONTEXT索引。它很难进行搜索。

“事实是该索引已经在数据库中创建了,”

没有真正的事情是索引 无法 正确 创建
,因此它的状态是正确的。您可能只是重建了索引,但是通常最好先修复故障的根本原因。因此,我建议您删除并重新创建。显然,最初的故障是由于某些环境条件而不再适用。

“现在查询已执行,但是它没有给我任何结果(返回了0行)。(而且我确信它应该像100行一样返回)”

这样听起来就好像您是以二进制格式存储文档一样。什么样的文件?它们是受支持的格式吗?这将取决于您所使用的Oracle版本。例如, Oracle Text
10g最多支持Word
2003(即,仅DOC),而Oracle Text 11g支持Word
2007(即,也为DOCX)。



 类似资料:
  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。

  • 我能够成功地打电话给邮递员: /mfp/api/az/v1/token和 /mfpadmin/management-apis/2.0/runtimes/mfp/applications 我正在获取从/mfp/api/az/v1/token接收的承载令牌,并将其添加到/mfp/applications的授权标头中。 我收到了来自两者的200个响应,并从每个API中获取了预期的信息。 然后,我选择从P

  • 我一直在使用声纳3.2 同样的配置,当我升级到SonarQube 4.4时 声纳项目属性: 请帮助整理这些例外 问候, KP

  • 我已经看过并尝试了几乎所有关于这个话题的其他帖子,但运气不好。 我使用的是python 3.6,所以我使用的是以下AMI