为什么Oracle文档中的两个最后重写规则不起作用?
来源http://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#i1007557
查询应用程序有时会解析最终用户查询,解释a 使用不同的运算符以一种或多种方式查询字符串 组合。例如,如果用户输入kukui坚果的查询,您的 应用程序可能会输入查询{kukui nut}和{kukui或nut}来查询 增加召回。
使用查询重写功能可以提交单个查询 将原始查询扩展为重写版本。结果 返回时没有重复。
使用查询模板功能指定重写序列。 使用a有效地执行查询的重写版本 单次呼叫CONTAINS或CATSEARCH。
以下模板定义了查询重写序列。查询 {kukui nut}改写如下:
{kukui} {nut}
{kukui}; {螺母}
{kukui} AND {nut}
{kukui} ACCUM {nut}
这些转换的查询重写模板如下:
select id from docs where CONTAINS (text, '<query> <textquery lang="ENGLISH" grammar="CONTEXT"> kukui nut <progression> <seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq> <seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite></seq> <seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></seq> <seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite></seq> </progression> </textquery> <score datatype="INTEGER" algorithm="COUNT"/> </query>')>0;
答案 0 :(得分:3)
Oracle提供的示例中存在错误。查询运算符必须用空格分隔:
<seq><rewrite>transform((TOKENS, "{", "}", " AND "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ACCUM "))</rewrite></seq>
所以“AND”和“ACCUM”而不是文档中的“AND”和“ACCUM”。