代码之家  ›  专栏  ›  技术社区  ›  Adam Fyles

搜索Oracle CLOB列的最佳方法是什么?

  •  8
  • Adam Fyles  · 技术社区  · 14 年前

    我需要搜索一个CLOB列,并且正在寻找最好的方法来实现这一点,我在网上看到了使用DBMS\u LOB包以及使用Oracle文本的变体。有人能提供一个如何做到这一点的快速例子吗?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Baski    14 年前

    Oracle文本索引是一种方法。您可以使用CONTEXT或CTXRULE索引。上下文可用于非结构化文档,其中CTXRULE对结构化文档更有用。

    This

    您需要考虑的最重要的因素是LEXER&非索引字表。

    http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:5533095920114

        2
  •  1
  •   Gary Myers    14 年前

    你的CLOB里有什么?你在寻找什么?

    如果您正在搜索单词或短语(这可能是CLOB中的内容),那么Oracle文本是很好的。有时您会在CLOB中存储一些“奇怪”的内容,比如XML或web服务调用的返回值,这可能是另一回事。

        3
  •  1
  •   BenCourliss    14 年前

    我最近刚需要这么做,并提出了以下解决方案(使用springjdbc)

    String sql = "select * from clobtest where dbms_lob.instr(myclob, ? , 1, 1) > 0";
    return (String) getSimpleJdbcTemplate().getJdbcOperations().queryForObject(sql, new RowMapper<Object>() {
      public String mapRow(ResultSet rs, int rowNum) throws SQLException {
        String clobText = lobHandler.getClobAsString(rs, "myclob");
        return clobText;
      }
    }, searchText);
    

    似乎工作得很好,但我要做一些性能测试,看看它在负载下的工作情况如何。