Oracle文本包含和标记具有不同的行为

问题描述 投票:0回答:1

我对Oracle文本有疑问。我这样搜索:

WHERE
    ( contains(description_en, '%to_search.%', 1) > 0 );

现在Oracle返回我一行,其中有“ to_search”,但没有点。我怀疑这是因为Oracle确实将其作为断字处理(注意:“停止列表”为空)。

但是如果我尝试通过ctx_doc.markup调用突出显示找到的结果:

ctx_doc.markup(
      index_name => 'i_fil_lis_ce_fil_des_en',
      textkey => '12238',
      text_query => '%to_search.%',
      starttag => '<result>',
      endtag => '</result>',
      plaintext => true)

除非我删除to_search中的点,否则它不会突出显示text_key。对于其他符号,例如? / , / @,此行为相同。这对我来说毫无意义,甲骨文不应该将点的两次出现都一样对待吗?

我知道,Oracle在一个点和其他符号处打断了单词。这样,如果我搜索test,它也会找到test.。但是为什么相反呢?如果搜索test,为什么应该找到test.?我可以关闭它吗?

版本:Oracle Database 12c企业版12.1.0.2.0-64位

oracle oracle12c oracle-text
1个回答
0
投票

检查词法分析器配置。我想词法分析器只会忽略点。文字“ vocabulary”不包含任何单词“ test”。

© www.soinside.com 2019 - 2024. All rights reserved.