我对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位
检查词法分析器配置。我想词法分析器只会忽略点。文字“ vocabulary”不包含任何单词“ test”。