第6章

コンテンツおよびメタデータのクエリ

この章では、クエリプロセス、およびexteNd Director検索アプリケーションでクエリを実装する方法について説明します。

この章では、次のトピックについて説明します。

 
Top of page

クエリについて

クエリは、データソースからコンテンツを検索する場合に使用できる構造化された式です。exteNd DirectorのAutonomyベース検索機能では、データの各タイプに対して個々のクエリを作成することなく、「単一のクエリ式を使用」してコンテンツおよびメタデータの両方でクエリを実行できます。

メタデータのクエリ   exteNd Directorでは、次の2種類のメタデータをクエリできます。

コンテンツのクエリ   コンテンツは発行されている場合だけクエリできます。

 
Top of section

CMリポジトリのクエリ

exteNd Directorに装備されているデータフェッチャでは、exteNd Director CMリポジトリに保存されているコンテンツやメタデータに対してAutonomyベース検索を排他的に実行できます。

CMリポジトリをクエリするには、CMサブシステムをSearchサブシステムと併用します。CM APIは、CMリポジトリのクエリの実装で説明されているように、CMリポジトリに関連付けられた関連検索機能をラッパするクラスを提供します。

 
Top of section

カスタムデータソースのクエリ

Autonomy技術をexteNd Directorで使用してCMリポジトリ以外のデータソースを検索するには、Autonomy, Inc.の別売りデータフェッチャを購入する必要があります。

カスタムデータソースをクエリするには、Search APIクラスを使用し、カスタムデータソースのクエリの実装で説明されているようにクエリオブジェクトのインスタンスを生成して、使用ライセンスのある他のデータソースに対してクエリを実行する必要があります。

また、カスタムデータをCMリポジトリにインポートして、Autonomyベース概念クエリを実装するためにCMラッパクラスを使用することもできます。

 
Top of page

実行できるクエリのタイプ

exteNd Director Searchサブシステムでサポートされているクエリのタイプは、次のとおりです。

For more information各クエリタイプを指定する方法を示す構文定義やコード例など、クエリの各タイプの詳細については、を参照してください。

 
Top of page

CMリポジトリのクエリの実装

Autonomyベースの概念検索およびキーワード検索をexteNd Directorアプリケーションで実装するには、関連Search APIをラッパするCM API機能を使用します。

CMクラス

説明

対象の検索クラス

com.sssw.cm.api.EbiContentMgmtDelegate.runQuery()

ラッパ

com.sssw.search.api.EbiQueryEngineDelegate.runQuery()
com.sssw.cm.api.EbiQueryResult

拡張

com.sssw.search.api.EbiQueryResult

このラッパクラスはCMリポジトリに存在し、exteNd Director DRE (Dynamic Reasoning Engine)によりインデックスが作成されているコンテンツやメタデータでクエリを構築および実行するメソッドを提供します。

また、で説明されているように、環境を設定して、ドキュメントフェッチおよびクエリのプロセスを管理できます。

 
Top of section

CMリポジトリのクエリの主なクラスおよびインタフェース

CMリポジトリのクエリの主なクラスおよびインタフェースは、次のとおりです。

クラスまたはインタフェース

説明

パッケージ

EbiContentMgmtDelegate

EbiContentManagerインタフェースを実装するオブジェクトにアクセスするための委任

注記:   EbiContentManagerは、CMリポジトリの標準メタデータ、カスタムメタデータ、およびコンテンツにアクセスするメソッドを提供するインタフェースです。

com.sssw.cm.api

EbiQuery

様々なAutonomyベースクエリを構築し、クエリプロパティを設定するメソッドを提供するインタフェース

com.sssw.search.api

EbiQueryResult

CMリポジトリのコンテンツやメタデータのAutonomyベースクエリの結果を処理するメソッドを提供するインタフェース

com.sssw.cm.api

EboFactory

コンテンツマネージャ委任を取得するメソッドを提供するファクトリクラス

com.sssw.cm.client

EboFactory

CMサブシステムで使用されるオブジェクトのインスタンスを生成するメソッドを提供するサーバ側ファクトリクラス

com.sssw.cm.factory

 
Top of section

CMリポジトリのクエリのメソッド

この節では、exteNd DirectorアプリケーションでCMリポジトリをクエリする場合に使用できるCM APIメソッドについて説明します。

コンテンツマネージャ委任の取得

コンテンツマネージャ委任を取得するメソッドは、次のとおりです。

  com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate()

このメソッドは、デフォルトのCMリポジトリに関連するコンテンツマネージャ委任を返します。コンテンツマネージャ委任は、Autonomyベースクエリをこのリポジトリのドキュメントコンテンツおよびメタデータで実行するメソッドを提供します。

For more information委任を使用する理由については、プログラムを使用した例を参照してください。

CMリポジトリのクエリオブジェクトのインスタンス生成

Autonomyベースクエリは、Search APIにあるEbiQueryインタフェースに基づいています。CMサブシステムのコンテンツおよびメタデータを検索するには、このインタフェースを実装し、CMリポジトリと関連付けられたクエリオブジェクトのインスタンスを生成する必要があります。CM APIは、使用する次のメソッドを提供します。

  com.sssw.cm.factory.EboFactory.getQuery()

このクエリオブジェクトを使用すると、CMリポジトリのクエリの構築で説明されているように、Search APIメソッドを呼び出して、Autonomyベースクエリを構築し、検索結果を調整できます。

CMリポジトリのクエリの構築

CMリポジトリのクエリを構築する主なメソッドは、次のとおりです。

メソッド

説明

com.sssw.search.API.EbiQuery.setQueryType()

実行するクエリのタイプを指定します。

For more information詳細については、 を参照してください。

com.sssw.search.API.EbiQuery.setQueryText()

クエリ文字列を指定します。

com.sssw.search.API.EbiQuery.setMaxNumResults()

返される結果の最大数を設定します。

com.sssw.search.API.EbiQuery.setRelevanceCut()

クエリ結果の最小関連度条件を設定します。

注記:   同じメソッドを使用して、カスタムデータソースのAutonomyベースクエリを構築します。ただし、カスタムデータソースのクエリの実装で説明されているように、Search APIのファクトリからインスタンス生成されるクエリオブジェクトでこれらのメソッドを呼び出すという点が異なります。

CMリポジトリへのクエリの発行

CMリポジトリをクエリするメソッドは、次のとおりです。

  com.sssw.cm.api.EbiContentMgmtDelegate.runQuery()

このメソッドは、com.sssw.search.api.EbiQueryインタフェースを使用して構築するクエリを実行します。また、com.sssw.cm.api.EbiQueryResultインタフェースを実装するオブジェクトのコレクションとして結果を返します。

 
Top of section

コード例:CMリポジトリへのAutonomyベースクエリの発行

クエリオブジェクトのインスタンスを生成し、Defaultと呼ばれるデフォルトのCMリポジトリにクエリを実行するコードセグメントの例は、次のとおりです。

  ...
  public void getComponentData( EbiPortalContext context, java.util.Map params ) throws com.sssw.fw.exception.EboUnrecoverableSystemException 
  {
     //Declare a string buffer
     StringBuffer sb = new StringBuffer();
  
     //Set the query string
     String queryString = 典he+effect+of+the+recession+on+consumer+spending\x94 ;
  
     try
     {
        //Create a blank query object
        com.sssw.search.api.EbiQuery query = com.sssw.cm.factory.EboFactory.getQuery();
  
        //Set query type to text
        query.setQueryType(query.QUERY_TYPE_TEXT);
  
        //Specify the query string; this is a conceptual query
        query.setText(queryString);
  
        //Ask for a maximum of 50 results
        query.setMaxNumResults(50);
  
        //Ask for results that are at least 80% relevant
        query.setRelevanceCut(80);
  
        //Ask to return all available document properties in the results
        query.selectAll();
  
        //Get the content manager delegate
        EbiContentMgmtDelegate contentMgr = com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
  
        //Run the query
        //The boolean argument in runQuery indicates whether results should be filtered
        Iterator iterResults = contentMgr.runQuery(context, query, true).iterator();
  
        //Process the results
        while (iterResults.hasNext())
        {
           com.sssw.cm.api.EbiQueryResult res = (com.sssw.cm.api.EbiQueryResult)iterResults.next();
           //Get document metadata
           String docTitle = res.getTitle();
           java.sql.Timestamp dateCreated = res.getDateCreated();
  
           //Get document content
           String docAbstract = res.getAbstract();
  
           //Add query result to the string buffer returned by the component
           sb.append(貼n\x94 ).append(docTitle).append(dateCreated).append(docAbstract).append(貼n\x94 );
        }
     }
     catch (Exception _E)
     {
        System.out.println (轍uery failed\x94 );
        _E.printStackTrace();
     }
     //Set content type
     context.setContentType( com.sssw.portal.api.EbiComponentConstants.MIME_TYPE_HTML_UTF8 );
  
     //Place the content into the context
     context.setComponentContent(sb.toString());
  }
  ...

上の例で示されているように、このコンポーネントは、クエリ結果からドキュメントタイトルと作成日の両方のメタデータ、およびコンテンツを取得します。デフォルトでは、exteNd Director DREは、両方のタイプの情報にインデックスを作成するように設定されています。この動作は、CMサブシステム設定ファイルでデフォルトで有効にされている2つの検索オプションで制御されます。

CMサブシステムは、で説明されているように、検索環境をカスタマイズする場合に設定できるその他の多くのオプションを提供しています。

 
Top of page

カスタムデータソースのクエリの実装

exteNd Director Search APIは、CMリポジトリ以外のデータリソースのコンテンツに対してクエリを実行する場合のメソッドを提供するAutonomy APIに対してラッパクラスを提供します。

重要:   Autonomy技術をexteNd Directorで使用してその他のデータソースを検索するには、Autonomy, Inc.の別売りデータフェッチャを購入する必要があります。

 
Top of section

カスタムデータソースをクエリする主なクエリクラスおよびインタフェース

カスタムデータソースをクエリする主なクラスおよびインタフェースは、次のとおりです。

クラスまたはインタフェース

説明

パッケージ

EbiQueryEngineDelegate

EbiQueryEngineインタフェースを実装するオブジェクトにアクセスする委任。このインタフェースは、クエリエンジンを設定し、クエリを処理するメソッドを提供します。

注記:   EbiQueryEngineは、DREと通信するメソッドを提供するインタフェースです。

com.sssw.search.api

EbiQuery

様々なクエリを構築し、クエリプロパティを設定するメソッドを提供するインタフェース

com.sssw.search.api

EbiQueryResult

Searchサブシステムで実行されるクエリ結果を処理するメソッドを提供するインタフェース

com.sssw.search.api

EboFactory

EbiQueryEngineDelegateなどSearchサブシステム委任を取得するメソッドを提供するファクトリクラス

com.sssw.search.client

EboFactory

EbiQueryオブジェクトなど、Searchサブシステムで使用されるオブジェクトのインスタンスを生成するメソッドを提供するサーバ側ファクトリクラス

com.sssw.search.factory

 
Top of section

クエリメソッド

この節では、exteNd Directorアプリケーションでカスタムデータソースをクエリする場合に使用できるSearch APIメソッドについて説明します。

クエリエンジン委任の取得

クエリエンジン委任を取得するメソッドは、次のとおりです。

  com.sssw.search.client.EboFactory.getQueryEngineDelegate()

このメソッドは、EbiQueryEngineDelegateインタフェースを実装するオブジェクトを返します。このオブジェクトのメソッドは、クエリエンジンを設定して、クエリを実行する場合に使用できます。

For more information委任を使用する理由については、プログラムを使用した例を参照してください。

カスタムデータソースのクエリオブジェクトのインスタンス生成

Autonomyベースクエリは、SearchサブシステムAPIにあるEbiQueryインタフェースに基づいています。カスタムデータソースのコンテンツおよびメタデータを検索するには、このインタフェースを実装するクエリオブジェクトのインスタンスを生成する必要があります。使用するメソッドは、次のとおりです。

  com.sssw.search.factory.EboFactory.getQuery()

このクエリオブジェクトを使用すると、Search APIメソッドを呼び出して、Autonomyベースクエリを構築し、検索結果を調整できます。

カスタムデータソースのクエリの構築

カスタムデータソースのAutonomyベースクエリを構築する主なメソッドは、次のとおりです。

メソッド

説明

com.sssw.search.API.EbiQuery.setQueryType()

実行するクエリのタイプを指定します。

For more information詳細については、 を参照してください。

com.sssw.search.API.EbiQuery.setQueryText()

クエリ文字列を指定します。

com.sssw.search.API.EbiQuery.setMaxNumResults()

返される結果の最大数を設定します。

com.sssw.search.API.EbiQuery.setRelevanceCut()

クエリ結果の最小関連度条件を設定します。

注記:   同じメソッドを使用して、CMリポジトリのAutonomyベースクエリを構築します。ただし、CMリポジトリのクエリの実装で説明されているように、CM APIのファクトリからインスタンス生成されるクエリオブジェクトでこれらのメソッドを呼び出すという点が異なります。

カスタムデータソースへのクエリの発行

クエリを発行するメソッドは、次のとおりです。

  com.sssw.search.api.EbiQueryEngineDelegate.runQuery()

このメソッドは、com.sssw.search.api.EbiQueryインタフェースを使用して構築するクエリを実行します。また、com.sssw.search.api.EbiQueryResultインタフェースを実装するオブジェクトのコレクションとして結果を返します。

 
Top of section

コード例:カスタムデータソースへのAutonomyベースクエリの発行

次のコードセグメントは、Autonomyベース概念クエリをカスタムデータソースに発行するためのロジックを実装するexteNd DirectorコンポーネントのgetComponentData()メソッドを示します。

  ...
  public void getComponentData( EbiPortalContext context, java.util.Map params ) throws com.sssw.fw.exception.EboUnrecoverableSystemException 
  {
     //Declare a string buffer
     StringBuffer sb = new StringBuffer();
  
     //Set the query string, using syntax for a conceptual query
     String queryString = 菟hysician+specialty+orthopaedics\x94 ;
  
     try
     {
        //Create a blank query object
        com.sssw.search.api.EbiQuery query = com.sssw.search.factory.EboFactory.getQuery();
  
        //Set query type to text
        query.setQueryType(query.QUERY_TYPE_TEXT);
  
        //Specify the query string; this is a conceptual query
        query.setText(queryString);
  
        //Ask for a maximum of 50 results
        query.setMaxNumResults(50);
  
        //Ask for results that are at least 80% relevant
        query.setRelevanceCut(80);
  
        //Ask to return all available document properties in the results
        query.selectAll();
  
        //Get the query engine delegate
        EbiQueryEngineDelegate qe = com.sssw.search.factory.EboFactory.getQueryEngineDelegate();
  
        //Run the query
        Iterator iterResults = qe.runQuery(context, query, null, true).iterator();
  
        //Process the results
        while (iterResults.hasNext())
        {
           com.sssw.search.api.EbiQueryResult res = (com.sssw.search.api.EbiQueryResult)iterResults.next();
  
           //Get document metadata
           String docTitle = res.getTitle();
           java.sql.Timestamp dateCreated = res.getDateCreated();
  
           //Get document abstract
           String docAbstract = res.getAbstract();
  
           //Add query result to the string buffer returned by the component
           sb.append(貼n\x94 ).append(docTitle).append("\n").append(dateCreated).append("\n").append(docAbstract).append(貼n\x94 );
        }
     }
     catch (Exception _E)
     {
        System.out.println (轍uery failed\x94 );
        if (m_log.isError())
           m_log.error(_E);
     }
     //Set content type
     context.setContentType( com.sssw.portal.api.EbiComponentConstants.MIME_TYPE_HTML_UTF8 );
  
     //Place the content into the context
     context.setComponentContent(sb.toString());
  }
  ...

 
Top of page

検索クエリ記述子

検索クエリオブジェクトの初期化に使用できるXMLファイルとして検索クエリ記述子を構築できます。検索クエリ定義のXMLは、search-query-def_4_0.dtdで指定されたルールに準拠する必要があります。これは、exteNd DirectorプロジェクトlibraryフォルダのSearchService.jar内にあるDTDフォルダにあるファイルです。

 
Top of section

クエリ記述子を使用する利点

XMLクエリ記述子からクエリオブジェクトをプログラムで初期化する利点をいくつか示します。

 
Top of section

クエリタイプ要素

すべての検索クエリ定義には、クエリタイプを指定する要素があります。

  <!ELEMENT search-query-def (text-query | fuzzy-query | get-all-query | suggest-query | name-search-query)>

各クエリタイプ要素は、クエリを調整するプロパティを提供します。たとえば、次のテキストクエリ要素を考慮します。

  <!ELEMENT text-query (query-text?, field-spec?, query-options?, selected-props?)>

この定義では、query-textで定義されているテキストを検索するメタデータを示すfield-specプロパティでフィールド指定子リストを定義して、フィールドクエリを構築できます。

他のクエリタイプのXML定義は、次のとおりです。

Search APIは、ランタイム時にクエリタイプを設定するメソッドsetQueryType()を提供します。このメソッドは、EbiQueryオブジェクトで呼び出します。

For more information各クエリタイプを指定する方法を示す構文定義やコード例など、クエリの各タイプの詳細については、を参照してください。

 
Top of section

Query-optionsプロパティ

各クエリタイプには、クエリ動作を調整できるquery-optionsプロパティが含まれます。query-optionsのXML定義は、次のとおりです。

  <!ELEMENT query-options (
  	 batch-options?,
  	 date-range?,
  	 exclusions?,
  	 generate-quick-summary?,
  	 thesaurus-options?,
  	 max-num-results?,
  	 relevance-cut?,
  	 sort-by-date?,
  	 sort-by-relevance?,
  	 use-abs-weight?
  )>

これらの各オプションに対して、Search APIは、ランタイム時に個別にオプションを設定するためにEbiQueryオブジェクトで呼び出すことができるメソッドを提供します。各オプションの説明は、次のとおりです。

クエリオプション

説明

関連メソッド

batch-options

特定サイズのバッチで結果セットを返します。

setBatchOptions()

date-range

ドキュメント作成日の指定範囲内で検索します。

setDateRange()

exclusions

クエリ結果から指定ドキュメントを実行します。

setExclusions()

generate-quick-summary

結果セットの各アイテムに対するクイックサマリを生成します。

setGenerateQuickSummary()

thesaurus-options

類義語クエリの類義語リポジトリを設定します。

setThesaurus()

max-num-results

返される結果の最大数を設定します。

setMaxNumResults()

relevance-cut

クエリ結果の省略する関連度(最小類似スコア)を設定します。

setRelevanceCut()

sort-by-date

クエリ結果を日付でソートします。

setSortByDate()

sort-by-relevance

クエリ結果を関連度でソートします。

setSortByRelevance()

use-abs-weight

パーセントではなく絶対的な重さで関連度スコアを返します。

setUseAbsWeight()

 
Top of section

Selectedプロパティ

クエリタイプのselected-propsプロパティでは、クエリ結果で返されるドキュメントプロパティを指定できます。selected-propsのXML定義は、次のとおりです。

  <!ELEMENT selected-props (prop-name* | select-all)>

この定義を使用して、個々のドキュメントプロパティ、または使用可能なすべてのドキュメントプロパティが返されるようにクエリを指定できます。

また、EbiQueryオブジェクトで次のSearch APIメソッドを呼び出して、ドキュメントプロパティをランタイム時に指定できます。

メソッド

説明

select()

クエリ結果で返される指定ドキュメントプロパティを選択します。

selectAll()

クエリ結果で使用できるすべてのドキュメントプロパティを返します。

selectAlways()

クエリ結果の指定ドキュメントプロパティを常に返します。

removeSelect()

Selectedプロパティのリストから指定プロパティを削除します。

 
Top of section

例:XMLでのテキストクエリの定義

XMLで定義されるテキストクエリの例は、次のとおりです。

  <search-query-def>
  	 <text-query>
  	 	 <query-text><![CDATA[clinical+trials+diabetes+research]]></query-text>
  	 	 <field-spec>
  	 	 	 <field-spec-list><![CDATA[fnameTITLE=*report*+fnameCountry=*USA*]]></field-spec-list>
  	 	 	 <field-boolean-expr><![CDATA[fnameTITLE+AND+fnameCountry]]></field-boolean-expr>
  	 	 </field-spec>
  	 	 <query-options>
  	 	 	 <date-range>
  	 	 	 	 <date-from><![CDATA[11/01/2002]]></date-from>
  	 	 	 	 <date-to><![CDATA[11/02/2002]]></date-to>
  	 	 	 	 <date-pattern><![CDATA[dd/MM/yyyy]]></date-pattern>
  	 	 	 </date-range>
  	 	 	 <generate-quick-summary/>
  	 	 	 <max-num-results><![CDATA[50]]></max-num-results>
  	 	 	 <relevance-cut><![CDATA[70]]></relevance-cut>
  	 	 	 <sort-by-date/>
  	 	 	 <sort-by-relevance/>
  	 	 </query-options>
  	 	 <selected-props>
  	 	 	 <prop-name><![CDATA[AUTHOR]]></prop-name>
  	 	 	 <prop-name><![CDATA[TITLE]]></prop-name>
  	 	 	 <prop-name><![CDATA[CREATED]]></prop-name>	 
  	 	 </selected-props>
  	 </text-query>
  </search-query-def>

この定義から、このクエリは、単純なテキストクエリ(キーワード検索)ではなく、次のような特徴を持ったクエリであると言えます。

特徴

説明

概念検索を実行する

<query-text>要素は、次の形式で検索文字列を指定します:

  word1+word2+word3+... wordN

コンテンツおよびメタデータを検索する(フィールドクエリ)

<field-spec>要素は、titleフィールドに文字列reportcountryフィールドに文字列USAを含むすべてのドキュメントを検索するようにアプリケーションを指定します。

指定時間内で検索する

<date-range>要素は、2002年11月1日から11月2日の間に作成されたドキュメントに検索を制限します。

結果の最大数を指定する

<max-num-results>要素は、最大50の結果が返されるように指定します。

関連度しきい値を指定する

<relevance-cut>要素は、関連度が少なくとも70%の結果を要求します。

特定のドキュメントプロパティを返す

<selected-props>要素は、著者、タイトル、および作成日が、結果セットの各ドキュメントに返されることを示します。

このサンプルXMLクエリ定義は、search-query-def_4_0_sample.xmlにあります。また、このファイルは、exteNd DirectorプロジェクトのlibraryフォルダのSearchService.jar内のDTDフォルダにあります。

 
Top of section

例:XML記述子からのクエリオブジェクトの初期化

クエリオブジェクトをXMLクエリ記述子から初期化するサンプルコードは、次のとおりです。

  ...
  //Instantiate a blank query object
  com.sssw.search.api.EbiQuery query = com.sssw.search.factory.EboFactory.getQuery();
  
  //Read in your query XML descriptor
  Document queryDesc = com.sssw.fw.util.EboXmlHelper.getDocumentFromString(myInputStream);
  
  //Initialize the blank query object with data from the XML
  //descriptor
  query.fromXML(queryDesc.getDocumentElement());
  ...

getDocumentFromString()メソッドは、DOMドキュメントを返します。これは、XMLドキュメントを表す文字列、この場合、入力引数myInputStreamから変換されます。

 
Top of page

クエリ結果のソート

この節では、Autonomyベース概念クエリの結果をソートする方法について説明します。

 
Top of section

日付、関連度の順によるソート

日付または関連度、あるいはその両方でクエリ結果をソートできます。両方のプロパティでソートする場合、結果は、日付、関連度の順でソートされます。

Procedure 日付、関連度の順でソートする

  1. com.sssw.search.api.EbiQueryオブジェクトを定義します。

  2. このオブジェクトで次のいずれかのメソッドを呼び出します。

    ソートファクタ

    内容

    コール

    関連度

    関連度によるソートを「有効」にする

    setSortByRelevance(true)

    関連度によるソートを「無効」にする

    setSortByRelevance(false)

    日付

    日付によるソートを「有効」にする

    setSortByDate(true)

    日付によるソートを「無効」にする

    setSortByDate(false)

 
Top of section

フィールドクエリ結果のソート

フィールドクエリの結果は、1つのパラメータで昇順または降順にソートすることもできます。パラメータは、標準メタデータフィールドまたはカスタムメタデータフィールドの値にすることができます。

注記:   標準メタデータフィールド名は、exteNd Directorインストールディレクトリのautonomy\\engineにある、DRE環境設定ファイルDirectorDRE.cfgの[フィールド]セクションに一覧表示されています。

Procedure フィールドクエリ結果をソートする

  1. フィールドクエリを発行する前に、で説明されているように、検索するメタデータのタイプ(標準メタデータまたはカスタムメタデータ、あるいはその両方)を指定するように検索環境が設定されているか確認してください。

  2. テキストエディタで、DRE環境設定ファイルDirectorDRE.cfgを開きます。

  3. [Server]セクションのパラメータFIELDSORT=1を設定して、フィールドソートを有効にします。

    注記:   このパラメータがない場合は、ファイルに追加してください。

  4. 環境設定ファイルを保存して閉じます。

  5. DREのリセットで説明されているように、DREをリセットします。

  6. プログラムを使用した例で説明されているように、データのインデックスを再作成します。

  7. フィールドクエリに作成したフィールド指定子リストに、次のいずれかの式を追加して、ソートパラメータを指定します。

    ソート式

    説明

    &fsort=FIELDNAME

    フィールドFIELDNAMEの値で昇順にソートします。

    &fsort=-FIELDNAME

    フィールドFIELDNAMEの値で降順にソートします。

    たとえば、CMリポジトリで、Collegesと呼ばれるドキュメントタイプおよびRankingLocationの2つのカスタムフィールドを定義しているとします。Massachusettsにあるすべての大学を検出し、結果をランクにより降順にソートする場合、フィールド指定子は次のようになります。

      ...
      String fieldSpecList =    "fnameDOCTYPENAME=*Colleges*+fnameLocation=*Massachusetts*+   &fsort=-Ranking";
      String fieldBooleanExpr = "fnameDOCTYPENAME+AND+fnameLocation";
      query.setFieldSpecList(fieldSpecList, fieldBooleanExpr);
      ...
      
    

    For more informationフィールドクエリの構築および実装の詳細については、フィールドクエリを参照してください。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...