2

Oracle ドキュメントの例の最後の 2 つの書き換えルールが機能しないのはなぜですか?

ソースhttp://docs.oracle.com/cd/B28359_01/text.111/b28303/query.htm#i1007557

クエリ アプリケーションは、さまざまな演算子の組み合わせを使用して 1 つ以上の方法でクエリ文字列を解釈し、エンド ユーザー クエリを解析することがあります。たとえば、ユーザーがククイ ナッツのクエリを入力した場合、アプリケーションはクエリ {kukui nut} および {kukui or nut} を入力して再現率を高めることができます。

クエリ書き換え機能を使用すると、元のクエリを書き換えられたバージョンに展開する単一のクエリを送信できます。結果は重複なしで返されます。

クエリ テンプレート機能を使用して書き換えシーケンスを指定します。クエリの書き直されたバージョンは、CONTAINS または CATSEARCH への 1 回の呼び出しで効率的に実行されます。

次のテンプレートは、クエリ書き換えシーケンスを定義します。{kukui nut} のクエリは次のように書き直されます。

{kukui} {nut}

{ククイ}; {ナット}

{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;
4

1 に答える 1

3

Oracle が提供する例には誤りがあります。クエリ演算子はスペースで区切る必要があります。

<seq><rewrite>transform((TOKENS, "{", "}", " AND "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ACCUM "))</rewrite></seq>

したがって、ドキュメントの「AND」と「ACCUM」ではなく、「AND」と「ACCUM」です。

于 2013-02-13T08:13:38.947 に答える