为什么 Oracle 文档中示例中的最后两个重写规则不起作用?
来源http://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#i1007557
查询应用程序有时会解析最终用户查询,使用不同的运算符组合以一种或多种方式解释查询字符串。例如,如果用户输入查询 kukui nut,您的应用程序可能会输入查询 {kukui nut} 和 {kukui or nut} 以增加召回率。
查询重写功能使您能够提交将原始查询扩展为重写版本的单个查询。结果返回没有重复。
您可以使用查询模板功能指定重写序列。只需调用一次 CONTAINS 或 CATSEARCH 即可有效地执行重写后的查询版本。
以下模板定义了查询重写序列。{kukui nut}的查询改写如下:
{kukui} {坚果}
{kukui} ; {坚果}
{kukui} 和 {nut}
{kukui}累积{坚果}
这些转换的查询重写模板如下:
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;