35 Lucene検索エンジンの構成

サード・パーティ製のLucene検索エンジンは、WebCenter Sitesに統合されています。LuceneによってContributorインタフェースの検索機能が動作するようになり、パブリック・サイト検索APIはWebサイトに対する検索機能をサポートできるようになります。

トピック:

35.1 WebCenter Sitesの検索機能の概要

WebCenter Sitesをインストールすると、WebCenter Sitesデータベースの検索機能とLuceneが使用可能になります。LuceneエンジンはWebCenter Sitesのインストール時に設定され、コンテンツ・コントリビュータ、Webサイト訪問者およびサードパーティのアプリケーションがアセットを検索できます。

この章には、Lucene検索エンジンの使用方法、追加のアセットを検索可能にする方法、検索エンジンを一時停止または無効にする方法に関する情報が含まれています。

トピック:

35.1.1 検索のための索引付け機能

「コントリビュータ」検索は、WebCenter Sitesデータベースではなく、Lucene検索索引に対して実行されます。検索索引は索引付けと呼ばれる自動プロセスによって作成され、検索時にアセット・データを収集して、すぐに取得できる書式で格納します。

検索結果は、検索の実行時に索引内で使用可能なデータのみに基づいて返されます。索引内に含まれるアセットが多くなるほど、構築と検索にかかる時間が長くなります。

索引付けするアセットのタイプは、検索の構成フォームで選択します。選択したアセットが索引付けされ、検索できるようになります。索引付けから除外したアセット・タイプは、索引付けされず、検索できません。

索引が構築されると、Lucene検索エンジンが30秒ごとに、索引付けに選択されたアセット・タイプに対する変更をチェックします。変更(新しい検索アイテムの作成、既存のエントリの編集、エントリの削除など)が行われた場合、Luceneによって索引が更新されます。デフォルトで、索引データは<cs_shared_dir>/luceneディレクトリ(<cs_shared_dir>Sites共有ファイル・システム・ディレクトリ)に格納されます。

35.1.2 WebCenter Sitesの検索機能の使用

WebCenter Sitesには、グローバル検索、アセット・タイプ検索、さらに最も詳細な検索機能である「アセット・タイプ索引の属性の構成」といった検索機能があります。この検索オプションは、索引付け対応のアセット・タイプの検索可能な属性を指定できることから、アセット・タイプ索引オプションのサブセットになります。

システム上のすべての検索を有効にすることができます。検索は、索引付けされたユーザー定義の属性の格納方法によって区別されます。

グローバル検索では、システム定義の属性を個別に索引付けし、ユーザーが固有の属性によって検索できるようにします。アセットのユーザー定義の属性値は、1つの表のセルにまとめて格納されます。属性名は省略されます。グローバル検索を構成すると、ユーザーはアセット・タイプごとにすべてのユーザー定義の属性を検索するように制限されることになります。

たとえば、記事のアセットがあるとします。Jane Doeという文字列で検索できるかもしれませんが、固有のユーザー定義の属性1つだけに検索を絞ることはできません。すべてのユーザー定義の属性データは1つのセルにまとめて格納されており、そのセルでは属性同士は区別されないからです。

アセット・タイプ検索は、各属性値を属性名ごとに独自の個別セルで索引付けします。アセット・タイプ検索は、パブリック・サイト検索APIで使用され、Webサイト上の検索機能を有効にします。『Oracle WebCenter Sitesでの開発』パブリック・サイト検索の使用に関する項を参照してください。

アセット・タイプ検索では、グローバル検索にはない固有性のレベルで検索結果を得ることができるのです。アセット・タイプ検索は、グローバル検索よりも短時間で検索結果を戻すことができます。アセット・タイプ検索では、関連する属性のみに検索を限定することで、不必要な索引データで検索を実行する必要がなくなります。

アセット・タイプ検索の属性の構成を使用すると、アセット・タイプ検索によって有効になっているアセット・タイプに対して指定した属性のみに、検索を制限することができます。

次の図と表には、Luceneベースの各検索の相違点と、それらの粒度のレベルが示されています。各表は、同じ記事タイプのアセットの索引を表していますが、それぞれの検索機能のタイプが異なっています。これらすべての表では、システム定義の属性データのみが同じ方法で格納されています。

ノート:

次の表は、グローバル検索、アセット・タイプ検索、属性固有の検索の粒度を示すものです。索引付けされたデータが検索エンジンによって格納される方法を示すものではありません。

図35-1 各検索機能を示す表と相違点

図35-1の説明が続きます
「図35-1 各検索機能を示す表と相違点」の説明

検索では、データの索引付け方法以外に、次の表にまとめたような様々な機能が有効になります。

表35-1 検索機能

グローバル索引 アセット・タイプ索引

選択されているすべてのアセット・タイプを通じて検索できます。

アセット・タイプごとに検索できます(複数のアセット・タイプを有効にできます)。

選択されているすべてのアセット・タイプに対して1つの索引を作成します。

アセット・タイプごとに1つの索引を作成します。

システム定義属性による検索をサポートします。

システム定義属性とカスタム属性による検索をサポートします。

(アセット・タイプ索引の属性の構成を使用して)システム定義属性をフィルタできます。

(アセット・タイプ索引の属性の構成を使用して)システム定義属性とカスタム定義属性をフィルタできます。

ライブ・サイト上のパブリック検索をサポートします。

ライブ・サイト上のパブリック検索をサポートします。

Sites CECS統合のための要件、スコープおよびスプリント計画の体験検索APIに関する項を参照してください。

35.2 検索索引の設定

Luceneを設定する主なステップは、次のとおりです。

  1. Luceneを構成するには、その前に、システム上でそれを有効化する必要があります。
  2. それによりLuceneは、どのアセットに索引付けするべきかを認識します。グローバル索引とアセット・タイプ索引にアセットを追加できます。

    索引付けするアセットを選択し、バイナリ・ファイルの索引付けを有効にすると、索引付けプロセスを開始できます。

    Luceneは索引付け中に、選択されたアセット・タイプのアセットのコンテンツと、アセットが参照するバイナリ・ファイルのコンテンツ(該当する場合)を調べ、これらのアセットのエントリを索引内に作成します。グローバル索引では選択されているすべてのアセット・タイプに対して1つの索引が作成され、アセット・タイプ索引ではアセット・タイプごとに1つの索引が作成されます。

    グローバル索引を作成してから、ユーザーが検索を実行すると、Contributorインタフェースまたはライブ・サイト上の検索機能によってアセットが返されます。アセット・タイプ索引を作成してから、ユーザーが検索を実行すると、ライブ・サイト上の検索機能によってアイテムが返されます。

  3. 索引を作成すると、検索する特定属性を選択することができます。これらの指定移入した属性の索引を作成、移入し、検索を実行すると、ライブ・サイトの検索機能によって、指定した属性が戻されます。
  4. 索引に追加した1つ以上のアセット・タイプでバイナリ・ファイルを参照するように設定する場合、これらのバイナリ・ファイルを参照するアセットを索引付けするときに、Luceneによってバイナリ・ファイルのコンテンツをテキストに変換するように構成できます。

35.2.1 Lucene検索エンジンの有効化

この項では、Luceneエンジンを有効化する方法について説明します。

Luceneエンジンを起動するには::

  1. 「一般的な管理」ツリーで、「管理」ノード、「検索」ノードの順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。
  2. 「検索エンジンの起動」をクリックします。

Luceneで、選択したデータの索引付けを開始できるようになります。データの索引付けにかかる時間は、索引付けされるアセットの数と、使用しているシステムの速度によって異なります。

Lucene検索エンジンは、一度起動したら、無効化されるまで継続して実行されます。索引付けの実行中は、選択したアセット・タイプに対する変更が検出され、索引が更新されます。索引の実行中、アセット・タイプのステータスは「有効」と表示されます。検索機能を削除する場合は、索引付けを停止するだけでなく、索引データを削除する必要もあります。索引データの削除を参照してください。

35.2.2 検索索引へのアセット・タイプの追加

この項では、グローバル検索索引とアセット・タイプ索引にアセット・タイプを追加する方法について説明します。各初期索引が作成されると、Luceneは5秒ごとに変更を確認します。デフォルトで、索引データは<cs_shared_dir>/luceneディレクトリ(<cs_shared_dir>WebCenter Sites共有ファイル・システム・ディレクトリ)に格納されます。データは、追加された後、索引付けが全面的に停止されるか、選択したアセット・タイプに対して一時停止されるまで、維持されます。Luceneが索引付けするまで、選択したタイプのアセットが検索機能によって戻されることはありません。

検索索引に新しいアセット・タイプを追加するには::

  1. Luceneエンジンを有効化します。

    1. 「一般的な管理」ツリーで、「管理」ノード、「検索」ノードの順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。

    2. 「検索エンジンの起動」をクリックします。

  2. グローバル検索索引にアセット・タイプを追加します。

    1. 「グローバル検索の構成」をダブルクリックします。

    2. 「索引」リストで、「追加」を選択します。WebCenter Sitesに、現在索引付けされていないアセット・タイプのリストが表示されます。

      図35-2 「グローバル検索の構成」フォーム

      図35-2の説明が続きます
      「図35-2 「グローバル検索の構成」フォーム」の説明
    3. 「アセット・タイプ」のリストで、索引付けするアセット・タイプを選択します。

    4. 「OK」をクリックします。

    5. 確認ポップアップ・ダイアログで、「OK」をクリックします。アセット・タイプのステータスが「有効」に変わり、選択したアセット・タイプに対して索引付けが有効になります。このタイプの最初のアセットが作成されるとすぐに、そのアセット・タイプに対して索引が作成されます。

  3. アセット・タイプ検索索引にアセット・タイプを追加します。

    1. 「アセット・タイプ検索の構成」をダブルクリックします。

    2. 「索引」リストで、「追加」を選択します。

      WebCenter Sitesに、現在索引付けされていないアセット・タイプのリストが表示されます。

    3. リストで、索引付けするアセット・タイプを選択します。

    4. 「OK」をクリックします。

      確認のポップアップ・ダイアログが開いたら、「OK」をクリックします。

      アセット・タイプのステータスが「有効」に変わり、選択したアセット・タイプに対して索引付けが有効になります。このタイプの最初のアセットが作成されるとすぐに、そのアセット・タイプに対して索引が作成されます。

  4. 必要に応じて、バイナリ・ファイルの索引付けを有効にします(「バイナリ索引作成の開始」をクリックします)。バイナリ・ファイルの索引付けの詳細は、「バイナリ・ファイルの索引付け」を参照してください。

35.2.3 アセット・タイプ索引に対する属性の構成

特定のアセット・タイプの固有の属性に対する索引付けを構成できます。選択されたアセット・タイプの固有の属性が選択できるようにするには、まずそのアセット・タイプに対して索引付けを有効にする必要があります。Luceneを有効にして、ライブ・サイト上で検索を実行したら、索引付けされた属性データが検索条件と一致したアセットが返されます。

選択されたアセット・タイプの属性を構成するには::

  1. 構成するアセット・タイプがアセット・タイプ索引に追加されていない場合は、追加します。手順については、検索索引へのアセット・タイプの追加を参照してください。
  2. 「一般的な管理」ツリーで、「管理」ノード、「検索」の順に展開し、「アセット・タイプ索引の属性の構成」をダブルクリックします。
  3. 「アセット・タイプ」のリストで、構成するアセット・タイプを選択します。WebCenter Sitesに、選択したアセット・タイプの属性のリストが表示されます。

    図35-3 「アセット・タイプ索引のアセットの構成」フォーム

    図35-3の説明が続きます
    「図35-3 「アセット・タイプ索引のアセットの構成」フォーム」の説明
  4. 次の情報も開きます。
    • 有効: 指定した属性が、その特定のアセット・タイプの索引付けに対して有効化されているかどうかを示します。属性を無効化するには、その属性のチェック・ボックスを選択解除します。

    • タイプ: 属性に格納されるデータのタイプを示します。たとえば、NUMERICの場合は価格情報が格納されていることを示している可能性があります。TEXTやDATETIMEのデータを持つこともできます。

    • トークン化済: このデータをテキストに変換してから索引付けする場合は、「True」を選択します。トークン化されていないデータは1語として索引付けされ、読み手に解釈してもらえない可能性があります。

    • 格納済: 指定した属性の元のテキスト全体が索引に追加されているかどうかを示します。索引にテキスト全体を格納する場合は、「True」を選択します。

      ノート:

      リストされている各アセット・タイプに対して、少なくとも1つの属性を有効にする必要があります。

  5. 選択されているアセット・タイプに対する変更が完了したら、「保存」をクリックします。

35.2.4 バイナリ・ファイルの索引付け

バイナリ・ファイルとは、Word (.doc)やPDFドキュメントなど、テキスト以外のタイプのファイルのことです。アセットがバイナリ・ファイルを参照しない場合や、参照先のファイルに索引付けのできないコンテンツ(画像やビデオ)が含まれている場合は、このオプションを無効のままにしておくことができます。

この項の内容は次のとおりです。

35.2.4.1 バイナリ・ファイルの索引付けの有効化

索引付けのキューに追加した1つ以上のアセット・タイプで、WebCenter Sitesファイル・システム内に格納されたバイナリ・ファイルを参照するように設定する場合、これらのバイナリ・ファイルを参照するアセットを索引付けするときに、Luceneによってバイナリ・ファイルのコンテンツをテキストに変換するように構成できます。デフォルトでは、Luceneは、索引付けされたアセットが参照するすべてのバイナリ・ファイルを無視するように設定されています。

バイナリ・ファイルの索引付けを有効化するには::

  1. Luceneエンジンが有効でない場合は、これを有効にします。

    1. 「一般的な管理」ツリーで、「管理」ノード、「検索」の順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。

    2. 「検索エンジンの起動」をクリックします。

      ボタン名が「検索エンジンの停止」に変わります。

  2. 「一般的な管理」ツリーで、「管理」ノードを開き、「検索」を開きます。

  3. 次のいずれかを実行します。

    • グローバル検索に対してバイナリ・ファイルの索引付けを有効化するには、「グローバル検索の構成」をダブルクリックします。

    • アセット・タイプ検索に対してバイナリ・ファイルの索引付けを有効化するには、「アセット・タイプ検索の構成」をダブルクリックします。

  4. 「バイナリ索引作成の開始」をクリックします。

    索引付けされたアセットが参照するすべてのバイナリ・ファイルが、Luceneによってテキストに変換されます。

35.2.4.2 バイナリ・ファイルの索引付けの無効化

索引付けされたアセットが参照するバイナリ・ファイルのコンテンツを、Luceneによって変換する必要がなくなったと判断したら、この機能を無効化してパフォーマンスを向上させることができます。

バイナリ・ファイルの索引付けを無効化するには::

  1. Luceneエンジンが有効でない場合は、これを有効にします。

    1. 「一般的な管理」ツリーで、「管理」ノード、「検索」の順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。

    2. 「検索エンジンの起動」をクリックします。

      ボタン名が「検索エンジンの停止」に変わります。

  2. 「一般的な管理」ツリーで、「管理」ノードを開き、「検索」を開きます。

  3. 次のいずれかを実行します。

    • グローバル検索に対してバイナリ・ファイルの索引付けを無効化するには、「グローバル検索の構成」をダブルクリックします。

    • アセット・タイプ検索に対してバイナリ・ファイルの索引付けを無効化するには、「アセット・タイプ検索の構成」をダブルクリックします。

  4. 「バイナリ索引作成の終了」をクリックします。

    Luceneは、索引付けされたアセットが参照するすべてのバイナリ・ファイルを無視するようになります。

35.3 Lucene検索エンジンの無効化

パフォーマンスを向上させる場合は、Luceneエンジンを停止することができます。このエンジンを停止すると、アセットを追加または削除したり、索引付けを一時停止することができません。アセットの索引を再作成することもできません。

索引付けを停止するには:

  1. 「一般的な管理」ツリーで、「管理」ノード、「検索」の順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。
  2. 「検索エンジンの停止」をクリックします。

    ボタン名が「検索エンジンの起動」に変わります。

    これでLuceneエンジンによる索引付けが無効になります。ただし索引データは保持されるので、Contributorインタフェースやパブリック・サイトでの検索では、前回索引を構築したときに含まれていたアセットが返されます。索引データを削除する(つまり検索機能を削除する)場合は、索引データの削除を参照してください。

    ノート:

    グローバル検索の索引付けを停止すると、Contributorインタフェースの検索機能やパブリック・サイトで使用される検索索引が更新されません。このため、検索結果が不正確になります。

    • Contributorから検索機能を削除するには、グローバル索引からすべてのアセットを削除することも必要です。索引データの削除を参照してください。

    • 索引付けの停止中にアセットを追加または削除した場合は、索引付けを再起動するときに索引を再構築することで、正確な検索索引を作成する必要があります。「索引の再作成」を参照してください。

35.4 検索索引の維持

Luceneの設定後は、アセットに対する一括操作、索引の再作成、索引データの削除、または検索エンジンの固有の問合せのためのコード記述を行うために、索引付けの一時停止などのタスクを実行する必要が生じる場合があります。

この項の内容は次のとおりです。

35.4.1 索引付けの一時停止と再開

索引付けの一時停止と停止は、類似した機能です。索引付けを一時停止する場合、選択したアセット・タイプの索引付けを一時停止できます。検索索引を停止すると、すべてのアセットの索引付けが停止されます。

多数のアセットを追加および削除する場合は、追加または削除するアセット・タイプの索引付けを一時停止することで、プロセスの速度を上げることができます。これらの変更内容を検索索引に反映させるには、索引の再作成機能を使用して、追加または削除したすべてのアセット・タイプの索引付けを行う必要があります。

35.4.1.1 グローバルおよびアセット・タイプの索引付けの一時停止

索引付けが有効になっている場合、WebCenter Sitesデータベースに追加または更新されたすべてのアセットは、保存後に索引付けされます。多数のアセットを保存する場合、そのアセット・タイプの索引付けを一時停止すると、処理速度が上がります。アセットがデータベースに追加されたら、索引付けを再開し、すべてのアセット・タイプの索引を再作成して、すべての新しい(および既存の)アセットの索引付けを一度に行います。

一時停止しても、検索では既存の索引に対する結果が引き続き返されます。ただし、索引付けの一時停止後に行われたデータベースへの変更は索引付けされません。このため、索引付けの一時停止後のデータベースへの変更は、検索結果に反映されなくなります。

索引付けを一時停止するには:

  1. Luceneエンジンが有効でない場合は、これを有効にします。

    1. 「一般的な管理」ツリーで、「管理」ノード、「検索」の順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。

    2. 「検索エンジンの起動」をクリックします。

      ボタン名が「検索エンジンの停止」に変わります。

  2. 「一般的な管理」ツリーで、「管理」ノードを開き、「検索」を開きます。

  3. 次のいずれかを実行します。

    • グローバル検索に対して索引付けを一時停止するには、「グローバル検索の構成」をダブルクリックします。

    • アセット・タイプ検索に対して索引付けを一時停止するには、「アセット・タイプ検索の構成」をダブルクリックします。

  4. 「索引」リストで、「一時停止」を選択します。

    WebCenter Sitesに、索引付けを一時停止できるアセット・タイプのリストが表示されます。

  5. 「アセット・タイプ」のリストで、索引付けを一時停止するアセット・タイプを選択します。

    ノート:

    リストで「一時停止」を選択したときにアセット・タイプが表示されない場合は、そこで処理を中止します。すべてのアセット・タイプに対して索引付けが一時停止されているか、索引付けのためのアセット・タイプが選択されていないからです。

  6. 操作の選択肢が表示されるリストの横にある「OK」ボタンをクリックします。

  7. 確認のポップアップ・ダイアログが開いたら、「OK」をクリックします。

    Lucene検索エンジンによって、選択されたタイプのアセットに対する索引付けが一時停止され、索引データが保存されます。アセット・タイプのステータスが「一時停止」に変わります。

35.4.1.2 グローバルおよびアセット・タイプの索引付けの再開

索引付けを一時停止または無効化した後は、索引の再作成を行って、すべてのアセット・データが索引に含まれている状態にする必要があります。

索引付けを再開するには:

  1. 一時停止されたアセット・タイプに対して索引付けを再起動します。「検索索引へのアセット・タイプの追加」を参照してください。
  2. 索引付けの一時停止中にデータベースにアセットを追加した場合、索引を再作成して、新しいデータが索引に含まれるようにする必要があります。
  3. 索引付けの一時停止中にアセットを削除した場合は、通常の索引付けプロセスによって削除されたアセットが検出され、索引からそのデータが削除されます。ただし、多数のアセットを削除した場合は、削除したアセット・タイプの索引全体を削除して、索引を再作成した方が速い場合もあります。

    索引データの削除を参照してください。

35.4.2 索引の再作成

アセットの索引の再作成にかかる時間は、索引付けされるアセットの数と使用しているシステム構成によって異なります。選択したタイプのアセットに対して更新された検索結果が返されるのは、Lucene検索エンジンがこれらを索引付けしてからです。

アセットの索引を再作成するには:

  1. Luceneエンジンが有効でない場合は、これを有効にします。

    1. 「一般的な管理」ツリーで、「管理」ノード、「検索」ノードの順に展開し、「検索エンジン索引の開始/停止」をダブルクリックします。

    2. 「検索エンジンの起動」をクリックします。

  2. 「一般的な管理」ツリーで、「管理」ノードを開き、「検索」ノードを開きます。

  3. 次のいずれかを実行します。

    • グローバル検索に対して索引を再作成するには、「グローバル検索の構成」をダブルクリックします。

    • アセット・タイプ検索に対して索引を再作成するには、「アセット・タイプ検索の構成」をダブルクリックします。

  4. 「索引」リストで、「索引の再作成」を選択します。

    WebCenter Sitesには、現在、索引用に選択されているアセット・タイプが表示されます。

    ノート:

    リストで「索引の再作成」を選択したときにアセット・タイプが表示されない場合は、そこで処理を中止します。索引付けのキューにアセット・タイプが存在しないか、キューの中のすべてのアセット・タイプに対する索引付けが一時停止になっているからです。

  5. リストから、索引データを構築(または再構築)するアセット・タイプを選択します。

  6. 「OK」をクリックします。

  7. 確認のポップアップ・ダイアログが開いたら、「OK」をクリックします。

    索引付けが開始されます。

    選択されたアセット・タイプのステータスが「有効」に変わります。

    選択したタイプのアセットに対して更新された検索結果が返されるのは、Lucene検索エンジンがこれらを索引付けしてからです。

35.4.3 索引データの削除

特定のタイプのアセットに対して検索を実行する必要がなくなった場合、不要なデータを索引から削除すれば、検索結果がさらにすばやく返ってくるようになります。

また、索引付けを停止した後に多数のアセットを削除した場合も、索引を削除する必要が生じることがあります。このような場合、該当する索引データを削除してから残りのアセットの索引を再作成した方が、通常の索引付けプロセスよりも速いことがあります。

索引データを削除する場合、WebCenter Sitesはまず選択したアセット・タイプのアセットの索引付けを一時停止し、続いてそれらのアセットの索引データを削除します。索引からデータを削除すると、選択したタイプのアセットの索引データが使用できなくなります。検索結果では、選択されたタイプのアセットによるデータが返されなくなります。

索引からデータを削除するには::

  1. 「一般的な管理」ツリーで、「管理」ノードを開き、「検索」ノードを開きます。
  2. 次のいずれかを実行します。
    • グローバル検索からアセットを削除するには、「グローバル検索の構成」をダブルクリックします。

    • アセット・タイプ検索からアセットを削除するには、「アセット・タイプ検索の構成」をダブルクリックします。

  3. 「索引」:リストで、「削除」を選択します。

    現在索引付けされているアセット・タイプが表示されます。

  4. リストから、索引データを削除するアセット・タイプを選択します。
  5. 「OK」をクリックします。
  6. 開かれる確認ダイアログ・ボックスで、「OK」をクリックします。

    WebCenter Sitesによって、選択されたタイプのアセットに対する索引付けが一時停止され、索引データが削除されます。

    「グローバル検索の構成」では、アセット・タイプのステータスが「一時停止」に変わります。このステータスは、既存の索引には新しいアセットが追加されないことを示しています。

    「アセット・タイプ検索の構成」では、アセット・タイプのステータスが「無効」に変わります。このステータスは、このアセットが索引付けできない状態になったことを示しています。

    Contributorインタフェースやパブリック・サイトの検索機能では、アセットが返されなくなります。

    アセットを再び検索可能にするには、アセット・タイプを索引付けにもう一度追加する必要があります。手順については、検索索引へのアセット・タイプの追加を参照してください。

35.5 検索索引の問合せコードの記述

次のコードは、Lucene検索エンジンの索引を問い合せる方法を示すサンプル・コードです。このコードは、ユーザーが特定のサイトと特定のアセット・タイプに対する検索を実行する必要があり、サイトはcurrentSite、タイプはassetTypeという変数で渡されるという前提に基づいています。グローバル索引に対する問合せを記述するにはコードを使用します。Lucene検索エンジンからは、すべてのアセットか、指定したサイトに属するタイプについて指定されたmaxResults (合計がmaxResultsよりも大きい場合)が返されます。

import COM.FutureTense.CS.Factory;
import COM.FutureTense.Interfaces.ICS;
import com.fatwire.cs.core.search.data.ResultRow;
import com.fatwire.cs.core.search.engine.*;
import com.fatwire.cs.core.search.query.Operation;
import com.fatwire.cs.core.search.query.QueryExpression;
import com.fatwire.cs.core.search.source.IndexSourceConfig;
import com.fatwire.cs.core.search.source.IndexSourceMetadata;
import com.fatwire.search.engine.SearchEngineConfigImpl;
import com.fatwire.search.query.QueryExpressionImpl;
import com.fatwire.search.source.IndexSourceConfigImpl;
import com.fatwire.search.source.SearchIndexFields;

import java.util.Collections;

public class SearchTest {
    public static void main(String[] args) {
        SearchTest searchTest = new SearchTest();
        String assetType = "Content_C";
        int maxResults = 100;
        try {
            searchTest.testSelect(assetType, maxResults);
        } catch (Exception e) {
            //
        }
    }

    public void testSelect(String assetType, int maxResults) throws Exception {
        ICS ics = Factory.newCS();
        IndexSourceConfig srcConfig = new IndexSourceConfigImpl(ics);
        SearchEngineConfig engConfig = new SearchEngineConfigImpl(ics);
        IndexSourceMetadata sourceMd =
                srcConfig.getConfiguration("Global");
        String engineName = sourceMd.getSearchEngineName();
        SearchEngine eng = engConfig.getEngine(engineName);
        String currentSite = (String)
                sourceMd.getProperty(SearchIndexFields.Global.SITEID);
        QueryExpression siteExpr = new
                QueryExpressionImpl(SearchIndexFields.Global.SITEID,
                Operation.CONTAINS, currentSite);
        siteExpr =
                siteExpr.or(SearchIndexFields.Global.SITEID, Operation.EQUALS, "0");
        QueryExpression typeQ = new QueryExpressionImpl(SearchIndexFields.Global.ASSET_TYPE,
                Operation.EQUALS, assetType);
        QueryExpression qe = typeQ.and(siteExpr);
        qe.setMaxResults(maxResults);
        SearchResult<ResultRow> res =
                eng.search(Collections.singletonList("Global"), qe);
    }
}