Каков наилучший способ поиска в столбце Oracle CLOB? - PullRequest
8 голосов
/ 16 августа 2010

Мне нужно найти столбец CLOB и я ищу лучший способ сделать это, я видел варианты онлайн использования пакета DBMS_LOB, а также что-то, называемое Oracle Text.Может кто-нибудь привести пример того, как это сделать?

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Oracle Text Indexing - это путь. Вы можете использовать либо индекс CONTEXT, либо индекс CTXRULE. CONTEXT можно использовать для неструктурированных документов, где CTXRULE более полезен для структурированных документов.

Эта ссылка предоставит дополнительную информацию о типах и синтаксисе индекса.

Самый важный фактор, который вам нужно учитывать, это LEXER & STOPLIST.

Вы также можете прочитать сообщения на сайте asktom.oracle.com

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

1 голос
/ 10 марта 2011

Мне нужно было сделать это совсем недавно, и я пришел к следующему решению (использует Spring JDBC)

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

Кажется, что он работает довольно хорошо, но я собираюсь провести некоторое тестирование производительности, чтобы увидеть, какхорошо работает под нагрузкой.

1 голос
/ 17 августа 2010

Что находится в вашем CLOB и что вы ищете?

Oracle Text хорош, если вы ищете слова или фразы (что, вероятно, то, что у вас есть в CLOB). Иногда вы сохраняете что-то «странное» в CLOB, например, XML или возвращаемое значение вызова веб-службы, и это может быть другой источник рыбы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...