[E20] Searching for null values in UCM

UCMのメタデータで検索しているときに、Null値や空白値の項目を見つけられたら助かるという場合があります。
このような検索を実現する方法は少々トリッキーで、また検索エンジンによって異なりますが、以下の方法で実現できます。

# このエントリの内容はUniversal Records Management(URM)でも利用できます。
現在利用中のUCMの検索エンジンを調べてください。
  • 管理 > (インスタンス名)の構成 を辿り、Index Engine Nameを確認します。
ORACLETEXTSEARCH(もしくはVerity)の場合
  • サーバーの設定変更は不要です。
    • 日時以外の場合
      以下の手順で空白やNullを含んだ検索が可能になります。
      1. Standard Search(標準検索)ページでクエリービルダーフォームに切り替えます。
      2. ページの右上方にあるSwitch Formsメニューから切り替えます。
      3. クエリービルダーで、検索したいフィールドを選択します。
      4. 演算子として、'matches'(一致する)を選択し、値の欄に'1' を設定します。
      5. 'show advanced options'(詳細オプションを開く) をクリックして、'Modify Query Text'(クエリテキストを変更)のチェックボックスをONにして、クエリを編集可能にします。
      6. クエリ編集エリアで、先ほど入れた1を消します。
    • 日時の場合
      以下の手順で日時フィールドに値がないドキュメントのリストを取得することができます。
      • クエリビルダで日付フィールドを選択します
      • 演算子を'On or After'(以後)にして、現在日時を選択します。
      • 別の行を追加し、'AND'を'OR'に変更します
      • 日付フィールドを選択して、演算子を'Before'(より前)に変更し、現在の日時を設定します。
      • 'show advanced options'(詳細オプションを開く) をクリックして、'Modify Query Text'(クエリテキストを変更)のチェックボックスをONにして、クエリを編集可能にします。
      • クエリを丸括弧で囲み、先頭に<NOT>を追加します。
      DATABASE.METADATA もしくは DATABASE.FULLTEXT の場合
      • 上記の作業は不要ですが、空文字をデータベース検索時にNull値に変換するコンポーネントを利用する必要があります。
        • 日時以外の場合 
          •  DatabaseSearchNullsWorkaround.zip を利用(本Blog筆者がUpしています)。
          • CS10gR35UpdateBundle component に含まれているOracleCaseInsenstiveSearch コンポーネントを利用
            • このコンポーネントを利用する場合、クエリの文法が少々異なり、<NOT>句を指定し、*を使う必要があります。
              例:
              <NOT>(xComments <matches> `*`)
               
            • パフォーマンスの問題から、問い合わせ結果が小さい場合にのみ使うことを推奨します(500KB以下程度)。
        • 日時の場合
          • 申し訳ありませんが、空の日付データを見つけるクエリは不明です。

      原文はこちら。
      http://blogs.oracle.com/kyle/2011/01/searching_for_null_values_ucm.html

      0 件のコメント:

      コメントを投稿