【发布时间】:2018-01-02 13:25:20
【问题描述】:
我正在搜索技术词“AN-XYZ99”。所以我用
SELECT *
FROM foo
WHERE CONTAINS(bar, 'AN{-}XYZ99') > 0
但我也得到类似“FO-XYZ99”或“BAR-XYZ99”的结果。我该怎么做才能确保达到预期的效果?
我用过
BEGIN
CTX_DDL.CREATE_PREFERENCE('FOO','BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE('FOO', 'ALTERNATE_SPELLING', 'GERMAN');
CTX_DDL.SET_ATTRIBUTE('FOO', 'COMPOSITE', 'GERMAN');
CTX_DDL.SET_ATTRIBUTE('FOO', 'MIXED_CASE', 'NO');
END;
“bar”列中的示例数据 (VARCHAR2(4000)):
"unbekannt Stadt Text: AN-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 foo"
"unbekannt Stadt Text: FO-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bar"
"unbekannt Stadt Text: BAR-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bla"
使用上面的语句,我希望第一行作为输出,但我也得到第二行和第三行。
Oracle 数据库 11g 企业版版本 11.2.0.3.0 - 64 位生产
【问题讨论】:
-
您是专门搜索单个单词的吗?或者你有什么模式?
-
@Ravi:上面提到的一个词,没有任何规律。
-
那么,你为什么在那里使用模式? ?
-
请从您的表格和您的预期输出中采样数据,以使您的问题更清晰
标签: oracle lexer oracle11gr2 oracle-text