【问题标题】:How to search for the word 'IN' in an XML CLOB using Oracle Full Text Search?如何使用 Oracle 全文搜索在 XML CLOB 中搜索单词“IN”?
【发布时间】:2012-02-17 21:29:08
【问题描述】:

我正在尝试查找一些现有代码中的错误,并且我是 Oracle 全文搜索的新手...

我遇到了从 xml 文档中返回包含单词“IN”的行的查询。

例如,假设我将这个 sn-p 存储在我的 Oracle 10 数据库的 CLOB 中:

<a>
  <b>IN</b>
</a>

我想查找所有 b 的值为 'IN' 的条目,因此我创建了一个如下所示的 where 子句:

where contains(column, '(IN) INPATH (//b)') > 0;

但这不会返回任何结果。我尝试搜索其他术语,例如“AA”和“BS”,效果很好。

我已经在 Google 和 Oracle documentation 中搜索了保留字,但我没有看到那里列出了“IN”。显然,它是 SQL 中的保留字,但我在完整的测试搜索或 XPATH 文档中看不到对它的引用。

我还尝试通过用 {}、"" 和任何我能想到的疯狂的东西将其包围来逃避该术语,但这无济于事。

任何建议将不胜感激!

【问题讨论】:

    标签: oracle oracle10g full-text-search


    【解决方案1】:

    您的假设可能是正确的。在全文搜索中,该术语是“停用词”。如果您没有定义自己的停止列表,则使用默认值:CTXSYS.DEFAULT_STOPLIST。请参阅this 文章以获取默认的英语停止列表。里面有“in”这个词。

    您可以删除停用词或使用CTX_DDL 包创建自己的停用词表,特别是CTX_DDL.REMOVE_STOPWORDCTX_DDL.CREATE_STOPLIST

    【讨论】:

    • 这正是我所需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多