XML でのワイルドカード/正規表現の照会の送信

正規表現照会は標準形式を使用して解析され、operator エレメントを含む term エレメントとして表されます。operator エレメントは、用語が正規表現であることを通知し、1 文字または複数文字のワイルドカードまたは正規表現を使用して用語エクスパンションを実施する必要がある、照会用語の開始区切り文字と終了区切り文字を識別します。 例えば、m/viv.*mo/ は以下として解析されます。

<term field="query" str="viv.*mo">
  <operator logic="regex" start-string="m/" end-string="/" />
</term>

start-string 属性と end-string 属性は照会処理の成果物であり、非標準の区切り文字を使用する場合を除き、XML 照会の送信には必要ありません。 最小限の XML は以下のとおりです。

<term field="query" str="viv.*mo">
  <operator logic="regex" />
</term>

ワイルドカード照会は、ワイルドカード文字 (ゼロ個以上の文字) および wildchar 文字 (正確に 1 文字) を識別する 1 つ以上の operator エレメントを含む term エレメントとして、同様に表現されます。標準の wildchar 演算子が入力フォームに追加されると、照会 vivis?mo* は以下として解析されます。

<term field="query" str="vivis?mo*">
  <operator logic="wildcard" char="*"/>
  <operator logic="wildchar" char="?"/>
</term>

正規表現の例とは異なり、char 属性は重要です。この属性は、検索時に用語を解釈するために使用されます。 照会の XML 表現を使用することは、wildchar 文字の最も一般的なエスケープ・メカニズムです。例えば、* を含むすべての単語を見つける場合 (* が単語文字として索引付けされていると想定)、次の用語を使用する必要があります。

<term field="query" str="%*%">
  <operator logic="wildcard" char="%"/>
</term>

このエレメントは、% を標準の * 文字に代わるワイルドカード文字として定義します。% 文字を常にワイルドカード文字として使用する場合は、ソースで使用する構文またはフォームを変更することもできますが、ワイルドカード文字のグローバル変更はお勧めしません。