検索の統合

     前  次    目次     
ここから内容

メタデータの検索

コンテンツ管理では、メタデータ検索と全文検索をサポートします。この章では、公開およびバージョン化メタデータの検索について説明しています。公開済みコンテンツは、ライブラリ サービスが無効になっているリポジトリからのコンテンツまたはワークフローを完了し、公開済み状態のコンテンツです。バージョン化コンテンツは、ライブラリ サービスが有効化になっているリポジトリ内のまだ公開されていないコンテンツです。公開済みコンテンツを検索すると、Nodes を返し、非公開コンテンツを検索すると、Versions を返します。ライブラリ サービスの有効化の詳細については、『コンテンツ管理ガイド』の「WLP リポジトリに対するライブラリ サービスの有効化」を参照してください。

注意 : バージョン化コンテンツの検索および公開済みコンテンツの検索は、これらの検索タイプは異なる API を使用するので、同時に適用できません。公開済みコンテンツを検索するには、ISearchManager.search およびバージョンされるコンテンツを検索するには、IVersionManager.search を使用します。これは、データを返すために、検索クエリが、異なるデータ ソースに送信されることを意味します。

この章の内容は以下のとおりです。

 


はじめに

メタデータ検索機能は、コンテンツ式言語を使用します。公開済みコンテンツおよびバージョン化コンテンツのメタデータを検索するときは、異なるプロパティを使用します。相違点について、関連する節で説明します。サポート対象のプロパティの完全なリストは、WebLogic Portal Javadoccom.bea.content.expression にあります。

 


公開済みコンテンツでのメタデータの検索

この章では、公開されたコンテンツでのメタデータの検索について説明しています。以下の節では、詳しく説明します。

プロパティ

以下の表は、一般的に使用されるプロパティおよび演算子について説明しています。サポート対象のプロパティの完全なリストは、WebLogic Portal Javadoccom.bea.content.expression にあります。

表 5-1 システム プロパティ
システム プロパティ
説明と例
cm_path
コンテンツ項目への仮想コンテンツ リポジトリのパス。
cm_path = 'WLP Repository/books/Ulysses'
cm_uid
コンテンツ項目のユニークな ID。
cm_uid = '0003456'
cm_parent_uid
コンテンツ項目の親の ID。
cm_parent_uid = '87543'
cm_createdBy
コンテンツ項目の作成者。
cm_createdBy = 'jjoyce'
cm_modifiedDate
コンテンツ項目を最終変更した日付。
cm_modifiedDate = '04/01/2008'
cm_nodeName
コンテンツ項目の名前。
cm_nodeName != 'abc'
cm_isHierarchy
非推奨。
cm_isContent
非推奨。
cm_objectClass
コンテンツ項目に関連するコンテンツ タイプ。
cm_objectClass = 'simpleType'
cm_binaryName
コンテンツ項目のバイナリ値のファイル名。
cm_binaryName = 'foo.gif'
cm_binarySize
コンテンツ項目のバイナリ値のサイズ。(バイト単位)
cm_binarySize = '188'
cm_contentType
コンテンツ項目バイナリ プロパティの MIME タイプ。
cm_contentType = 'image/gif'
cm_objectClassInstance
特定のオブジェクト クラスのすべてのインスタンスとそのすべての子を検索する。
cm_objectClassInstance = 'Product'
cm_value
特定な値の任意のノードのプロパティ値を検出する。
cm_value = 'red'

表 5-2 演算子
演算子
目的
like
テキスト構文の「like」演算子。
likeignorecase
テキスト構文の「like」 (大文字と小文字の区別がない) 演算子。
=
テキスト構文の「等値」演算子。
!=
テキスト構文の「不等価」演算子。
&&
テキスト構文の「AND」論理演算子。
in()
テキスト構文の「in」演算子。
! [negate]
テキスト構文の「NOT」演算子。
||
テキスト構文の「OR」論理演算子。
>
テキスト構文の「Greater Than」演算子。
<
テキスト構文の「Less Than」演算子。
contains
テキスト構文の「contains」演算子。
containsall()
テキスト構文の「contains all」演算子。
containsany()
テキスト構文の「contains any」演算子。
toProperty('<propertyName>')
スペース、バックスラッシュなどのプロパティ名の特殊文字で使用します。

表 5-3 ワイルドカード
ワイルドカード
説明
サンプル
*
どんな文字でもサポートします。
cm_NodeName like “ab*” は、「abcde」、「ab」、「ab234」、「abc」などに一致します。
_
1 つの文字をサポートします。
cm_nodeName like “ab_” は、「abc」、「abd」、「ab2」などに一致します。

Search オブジェクト

com.bea.content.search オブジェクトを使用してコンテンツ リポジトリのメタデータを検索できます。検索オブジェクトは、API がプロセスする式を取得し、com.bea.content.Node オブジェクトとして検索結果を返します。コード リスト 5-1 は、単純な検索の例です。

コード リスト 5-1 単純な検索の例
ISearchManager searchManager = ContentManagerFactory.getSearchManager();
Search search = new Search(“cm_nodeName != null”);
search.setSortCriteria("cm_objectClass, cm_nodeName");
ISortableFilterablePagedList<Node> nodes =
   searchManager.search(context, search);

検索マネージャ API は、idSearch のような検索の他のタイプもサポートします。詳細については、WebLogic Portal Javadoc を参照してください。

制限

WLP リポジトリを使用する場合、暗黙的なプロパティの検索結果をソートできません。返されるデータをソートするには、ISearchManager API にある postSearchSort を使用する必要があります。このメソッドは、search.setSortCriteria メソッドを使用するネイティブはソートより時間がかかります。

サンプル

検索でサポートされる式言語は、簡単で使いやすい文法に基づきます。さまざまな処理がサポートされ、ネストされた式を使用して複雑なクエリを簡単に構築することができます。式言語でサポート対象の文字列、日付、数値およびブールなどのさまざまなデータ型の詳細については、WebLogic Portal Javadoc を参照してください。

表 5-4 サンプル
サンプル
説明
cm_nodeName = 'hello'

「hello」に一致する名前のすべてのノードを返します。

cm_nodeName = 'hello' || cm_nodeName =
   'world'
「hello」または「world」という名前があるノード名を検索します。
cm_nodeName = 'hello' && city =
   'boston'
「hello」の名前および「boston」の市名があるノード名を検索します。
cm_nodeName = 'hello' && (color =
   'red' || color = 'blue')
ネストされた式を検索する場合、( および ) ブラケットを使用します。ネストでは、評価の左から右への順序を従います。この式は、「hello」という名前および「red」または「blue」カラー プロパティがあるすべてのノードを検索します。
複雑なネストの例
cm_nodeName = 'hello' &&
   ( (city = 'boston' || city =
   'boulder' ) && (color = 'red') )
「hello」という名前、「red」または「blue」カラー プロパティおよび「boulder」または「boston」市プロパティがある任意のノードを検索します。
!(cm_nodeName = 'hello' && city =
   'boston')

否定の ! 演算子は逆結果を返します。この例では、「hello」という名前および「boston」市名を持たないすべてのノードを返します。

 


バージョン化コンテンツでのメタデータの検索

この章では、バージョン化コンテンツでのメタデータの検索について説明しています。節の内容は以下のとおりです。

バージョンの特定のプロパティ

プロパティ
説明と例
cm_version
コンテンツのバージョン番号。
cm_version = '6'
cm_versionComment
バージョンへの変更を説明するテキスト。
cm_versionComment = 'Updates from Marketing'
cm_checkedOut
バージョンをチェックアウトしました。
cm_checkedOut = 'false'
cm_assignedToUser
ノードが割り当てられているユーザ。
cm_assignedToUser = 'rjordan'
cm_role
ノードが割り当てられているロール。
cm_role = 'Admin'
cm_latestVersion
コンテンツの最新のバージョン。
cm_latestVersion = 'true'

制限

バージョン化データを保存するテーブルは、公開済みデータを保存するデータより異なるデータ ストアにあるので、バージョン化コンテンツの検索にはいくつかの制限があります。SQL クエリで公開済みおよびバージョン化メタデータの両方を検索できないことを意味します。したがって、バージョン化コンテンツを検索する時、プロパティの一部はサポートされません。サポートしないプロパティの一覧は以下のとおりです。

バージョン化コンテンツの検索および公開済みコンテンツの検索は、これらの検索タイプは異なる API を使用するので、同時に適用できません。

サポート対象の属性

バージョン化コンテンツの検索では、特徴を保存する属性は以下のとおりです。

表 5-5 バージョン化コンテンツの検索のサポート対象の属性
属性
説明
cm_nodeName
ノード名を検索する。
cm_uid
UID (ユーザ識別子) でノードを検索する。
cm_value
バージョン化データの任意の値を検索する。
cm_lifeCycleStatus
任意のワークフロー状態でのノードを検索する。たとえば、cm_lifeCycleStatus = '3' (承認準備完了)。

サンプル

表 5-6 に、バージョン化コンテンツ (ワークフローに使用するコンテンツ) の検索例をいくつか示します。

表 5-6 バージョン化コンテンツの検索
サンプル
説明
name = 'matt' && (age = 33 || age = 13)
名前が「matt」および年齢が「13」または「33」に一致するノード バージョンを返します。
cm_version = '1' && city = 'calcutta'
ノードの最初のバージョンおよび市が「calcutta」であるノードを返します。
cm_versionComment =
'DevUpdates' && product = 'portal'
「portal」製品の「DevUpdates」に等しいコメントのノード バージョンを返します。
cm_modifiedBy = 'weblogic' && product = 'portal'
「portal」製品用「weblogic」で変更されるノードバージョンを検索します。
cm_lifeCycleStatus > 0 && article = 'development'
任意のワークフロー状態にある、「development」アーティクルがあるノード バージョンを返します。
cm_nodeName = 'matt_2' &&
   city = 'calcutta'
名前は「matt_2」、および市名は「calcutta」に一致するノードバージョンを返します。
cm_checkedOut = true
チェックアウトしたノード バージョンを検索します。
cm_assignedToUser != null
ユーザに割り当てられるバージョン化ノードを返します。
cm_value > 30 || cm_binaryName = null
「30」より大きい値がある、またはバイナリ値のファイル名は不明なまたは未定義である任意のプロパティのノード バージョンを検索します。
cm_role in ('weblogic','Admin') && cm_value > 30
「weblogic」および「Admin」にロールがあり、「30」より大きい値を持つプロパティがあるノード バージョンを検索します。
cm_version = '5'
バージョン番号が「5」のノードバージョンを返します。
age > 10 && (city in ('calcutta','boulder') || cm_role = 'Admin')
年齢の値が「10」より大きく、市が「calcutta」および「boulder」である、またはロールが「Admin」に割り当てられたノード バージョンを検索します。
cm_uid = '2051' && city = 'boulder'
ノード ID が「2051」で、「boulder」市のあるノード バージョンを検索します。
cm_nodeName = 'foo' && cm_latestVersion = true
「foo」という名前のノードの最新のバージョンを返します。


  ページの先頭       前  次