Joh*_*ohn 9 java regex database oracle
我有一个Java服务,可以在Oracle 12c数据库上执行搜索.问题是我有一个CONTAINS()搜索:
String query = "select * from sys.my_table WHERE CONTAINS(my_clob_field, '" + searchString + "', 1) > 0";
Run Code Online (Sandbox Code Playgroud)
但我也想得到结果中搜索词或短语的索引.
目前我尝试过的是获取每个返回的搜索结果并通过它们在Java中执行REGEX搜索,以找到在前端突出显示搜索结果所需的开始和停止索引.
这适用于常规文本,但如果要求用户可以搜索任何字符的任意随机排列(即#<@(F#> <)$*> /\ ./#&!)#} {}] [ s fdf)Java搜索还需要找到确切的字符串并返回开始和停止索引.
我为Oracle搜索排除了任何特殊字符,但是Java搜索需要一组完全不同的规则才能找到索引.试图让它们匹配已经证明是一场噩梦,通常Java REGEX搜索找不到Oracle数据库搜索找到的相同事件.我相信我采取的方法是完全错误的,并且应该有一些简单的方法来获取hte搜索词(或短语)出现的索引.
TL; DR:当执行一个CONTAINS()搜索,我怎么可能还发现仅使用Oracle数据库查询返回的搜索结果中的搜索词或短语的指标(所以我不担心失去搜索结果正则表达式匹配)?
也许您正在寻找类似REGEXP_INSTR()的东西?如果不匹配,它将返回零,否则返回匹配子字符串的第一个字符(或后面的第一个字符)的位置。
select
mytab.*,
regexp_substr(my_clob_field, searchString),
regexp_instr(my_clob_field, searchString)
from sys.my_table mytab
WHERE CONTAINS(my_clob_field, '" + searchString + "', 1) > 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |