UCMのメタデータで検索しているときに、Null値や空白値の項目を見つけられたら助かるという場合があります。
このような検索を実現する方法は少々トリッキーで、また検索エンジンによって異なりますが、以下の方法で実現できます。
# このエントリの内容はUniversal Records Management(URM)でも利用できます。
このような検索を実現する方法は少々トリッキーで、また検索エンジンによって異なりますが、以下の方法で実現できます。
# このエントリの内容はUniversal Records Management(URM)でも利用できます。
現在利用中のUCMの検索エンジンを調べてください。
- 管理 > (インスタンス名)の構成 を辿り、Index Engine Nameを確認します。
- サーバーの設定変更は不要です。
- 日時以外の場合
以下の手順で空白やNullを含んだ検索が可能になります。 - Standard Search(標準検索)ページでクエリービルダーフォームに切り替えます。
- ページの右上方にあるSwitch Formsメニューから切り替えます。
- クエリービルダーで、検索したいフィールドを選択します。
- 演算子として、'matches'(一致する)を選択し、値の欄に'1' を設定します。
- 'show advanced options'(詳細オプションを開く) をクリックして、'Modify Query Text'(クエリテキストを変更)のチェックボックスをONにして、クエリを編集可能にします。
- クエリ編集エリアで、先ほど入れた1を消します。
- 日時の場合
以下の手順で日時フィールドに値がないドキュメントのリストを取得することができます。 - クエリビルダで日付フィールドを選択します
- 演算子を'On or After'(以後)にして、現在日時を選択します。
- 別の行を追加し、'AND'を'OR'に変更します
- 日付フィールドを選択して、演算子を'Before'(より前)に変更し、現在の日時を設定します。
- 'show advanced options'(詳細オプションを開く) をクリックして、'Modify Query Text'(クエリテキストを変更)のチェックボックスをONにして、クエリを編集可能にします。
- クエリを丸括弧で囲み、先頭に<NOT>を追加します。
- 上記の作業は不要ですが、空文字をデータベース検索時に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 件のコメント:
コメントを投稿