State要素

Stateタイプは、操作するレコードのセットを決定する入力を含みます。

どのリクエストにも少なくとも1つの状態を含める必要があり、状態ごとに関連付けられたContentElementConfigsのナビゲーション状態を定義する必要があります。

Stateタイプの書式は次のとおりです。
<State>
   <Name>?</Name>
   <CollectionName>?</CollectionName>
   <SelectedRefinementFilter Name="?" Spec="?" Id="?">
      <Source FilterId="?">
         <StateName>?</StateName>
      </Source>
   </SelectedRefinementFilter>
   <TextSearchFilter Key="?" RelevanceRankingStrategy="?" Mode="?" 
      EnableSnippeting="?" SnippetLength="?" Language="?">?</TextSearchFilter>
   <RecordKind>?</RecordKind>
   <DataSourceFilter Id="?">
      <filterAST>
         <typ:filter/>
      </filterAST>
      <filterString>?</filterString>
      <Source FilterId="?">
         <StateName>?</StateName>
      </Source>
   </DataSourceFilter>
   <SelectionFilter Id="?">
      <filterAST>
         <typ:filter/>
      </filterAST>
      <filterString>?</filterString>
      <Source FilterId="?">
         <StateName>?</StateName>
      </Source>
   </SelectionFilter>
</State>
主な要素の意味は次のとおりです。
要素 最小/最大出現数 説明
Name 最小=0、最大=1 Stateの名前。
  • 複数の状態があるリクエストでは、それぞれの状態にName要素を使用する必要があり、それぞれの名前はそのリクエスト内にある他の状態名とは異なる必要があります。
  • リクエスト内の状態が1つだけの場合、その状態に名前を付けるかどうかはオプションです。
CollectionName 最小=0、最大=1 操作する既存のコレクションの名前。コレクション名では大文字と小文字が区別されることに注意してください。
SelectedRefinementFilter 最小=0、最大=無制限 特定の絞込みから絞込みナビゲーション問合せを作成します。詳細は、「SelectedRefinementFilter」を参照してください。
TextSearchFilter 最小=0、最大=無制限 レコードに割り当てられた特定の属性値に対するキーワード検索を実行します。書式の詳細は、「レコード検索フィルタ」を参照してください。
DataSourceFilter 最小=0、最大=無制限 EQL構文を使用して、他の処理を行う前にレコードのコーパスをフィルタします。詳細は、「EQLレコード・フィルタ」を参照してください。
SelectionFilter 最小=0、最大=無制限 EQL構文を使用して、最終レコード結果セットの選択基準を提供します。通常は、DataSourceFilterとともに使用されます。詳細は、「EQLレコード・フィルタ」を参照してください。

State使用のルール

リクエストでの状態のルールは、次のとおりです。
  • リクエストでは状態をStateタイプによって定義します。
  • どのリクエストにも、少なくとも1つの状態(つまり、1つのStateタイプ)を含める必要があります。
  • リクエストには複数の状態を含めることができます。複数の状態を含める場合は、各状態に一意の名前が必要です。
  • リクエストに状態を1つだけ含める場合は、その状態に名前を付けない(つまり、State定義でName要素を使用しない)ことができます。状態に名前がない場合、リクエストでは状態を1つだけ使用できます。
  • リクエストに名前のない状態を1つだけ含める場合は、その状態を空(つまり、<State/>)にすることができます。定義上、空の状態は名前のない状態です。
  • 状態には、Id要素を使用して識別子を提供する、複数のフィルタを含めることができます(SelectionFilter Id="SalesSearch"など)。この場合は、各フィルタ識別子が状態内で一意である必要があります。一意でない場合は、Endeca Serverによって例外がスローされます。

さらに、リクエストに複数の状態がある場合は、各構成で状態を1つだけ参照する必要があります。リクエストに名前付きの状態が1つだけある場合は、構成でその状態を参照するかどうかはオプションです(構成のどのイベントでもその状態が使用されるため)。

複数の状態を含むリクエストの例

次の単純な例では、それぞれ異なる属性に対してレコード検索を実行する、2つの名前付きの状態(FlavorSearchおよびWineSearch)を含むリクエストを示しています。結果は2つのRecordCountConfigタイプによってまとめられ、それぞれがStateName要素を使用して1つの名前付きの状態と関連付けられています。
<Request xmlns="http://www.endeca.com/MDEX/conversation/3/0">
   <State>
      <Name>FlavorSearch</Name>
      <TextSearchFilter Key="Flavors" Mode="AllPartial" Language="en">oak</TextSearchFilter>
   </State>
   <State> 
      <Name>WineSearch</Name>
      <TextSearchFilter Key="Wine" Mode="AllPartial" Language="en">merlot</TextSearchFilter>
   </State>
   <RecordCountConfig Id="FlavorRecs"> 
     <StateName>FlavorSearch</StateName>StateName>          
   </RecordCountConfig>
   <RecordCountConfig Id="WineRecs"> 
     <StateName>WineSearch</StateName>StateName>          
   </RecordCountConfig>
</Request>
検索の結果は、次の例のようになります。
<cs:Results xmlns:cs="http://www.endeca.com/MDEX/conversation/3/0" 
         xmlns:mdex="http://www.endeca.com/MDEX/XQuery/2009/09">
   <State xmlns="http://www.endeca.com/MDEX/conversation/3/0" 
         xmlns:ns2="http://www.endeca.com/MDEX/eql_parser/types" 
         xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <Name>FlavorSearch</Name>
      <TextSearchFilter Key="Flavors" Mode="AllPartial" Language="en">oak</TextSearchFilter>
   </State>
   <State xmlns="http://www.endeca.com/MDEX/conversation/3/0" 
         xmlns:ns2="http://www.endeca.com/MDEX/eql_parser/types" 
         xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <Name>WineSearch</Name>
      <TextSearchFilter Key="Wine" Mode="AllPartial" Language="en">merlot</TextSearchFilter>
   </State>
   <cs:RecordCount Id="FlavorRecs">
      <cs:NumRecords>6381</cs:NumRecords>
   </cs:RecordCount>
   <cs:RecordCount Id="WineRecs">
      <cs:NumRecords>3073</cs:NumRecords>
   </cs:RecordCount>
</cs:Results>

結果が示すように、FlavorSearch状態のレコード検索では6381レコードが返されるのに対し、WineSearch状態のレコード検索では3073レコードが返されます。