対話Webサービスの問合せリクエストの例

対話Webサービスへの各リクエストは、フィルタ状態と、コンテンツ要素構成および計算する演算子のリストから構成されます。ここでは、標準的なリクエストのコンテンツを示す例を示します。

このトピックには次の例が記載されています。

レコード検索の例

次のリクエストは、レコード検索問合せに使用されます。この例では、状態およびコンテンツ要素構成は示されず、Operator要素のみ示されています。Operatorは、ApplySpellingSuggestionOperatorRefinementOperatorおよびSearchOperatorなどの各種演算子のベース・タイプです。

この例では、Operatorは、フィルタ状態にテキスト検索コンポーネントを追加するために使用されるSearchOperatorタイプと一緒に使用されます。使用する必要がある検索インタフェースと、ユーザーがフロントエンド・アプリケーションで入力した検索語も指定します。

SearchOperatorは、SearchFilter要素のオプションを指定します。たとえば、Key (使用する標準属性、管理属性または検索インタフェースの名前を表す)およびこの要素のテキスト値(ユーザーが実際に入力した検索語を表す)を指定します。
<Operator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:type="SearchOperator" Within="false">
   <SearchFilter Mode="AllPartial" RelevanceRankingStrategy="numfields"
      Key="PROD_CATEGORY" EnableSnippeting="false" Language="en">
      electronics
   </SearchFilter>
</Operator>

一般に、SearchFilterタイプのOperatorには、構成された検索インタフェースの名前、検索モード、関連性ランキング方針、問合せの言語(スペル修正に使用する場合など)、スニペットを有効にするかどうかなど、リクエスト構成の様々な側面を指定できます。

同様に、他のタイプのOperatorでは、オプションを自分で指定できます。たとえば、RecordKindOperatorの場合、問合せが機能するレコード・タイプを指定できます。

フィルタ状態から演算子を削除するには、PopName_of_operatorOperatorを使用できます(Name_of_operatorは、SearchOperatorなど、削除する演算子の名前です)。

値検索、検索モードおよび関連性ランキングの詳細は、このガイドの該当する項を参照してください。様々な演算子タイプの詳細な構文については、対話WebサービスのOracle Endeca Server APIリファレンスを参照してください。

レコード・リストの取得の例

次の例には、対話Webサービス・リクエストの3つの要素すべて(状態、演算子およびコンテンツ要素構成)が含まれます。この例は、以前に計算されたStateを使用してレコードをフィルタ処理し、それらのレコードのリストをリクエストします。この例の問合せは次のとおりです。
  • フィルタStateは2つのレコード・フィルタによって表されます。つまり、SelectedRefinementFilterは、レコード・セットをDimDate_MonthName属性の値がMayのレコードとmountainという語を含むレコードに絞り込みます。
  • Operator要素は、値がdataRecordKind演算子を含みます。これは、このリクエストの目的が、実際のユーザーのソース・データ・レコード(システム・レコードまたはスキーマ・レコードなど他のレコードではない)を表すレコードの絞込みのリクエストであることを示します。
  • ContentElementConfigのタイプはRecordListConfigです。これを使用すると、レコード・リストをリクエストでき、オプションでページやページごとのレコード数を指定できます。
<Request xmlns:ns2="http://www.endeca.com/MDEX/lql_parser/types" 
    xmlns="http://www.endeca.com/MDEX/conversation/2/0">
  <State>
    <SelectedRefinementFilter Name="DimDate_MonthName" Spec="May"/>
    <SearchFilter Key="All">mountain</SearchFilter>
  </State>
  <Operator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RecordKindOperator">
    <RecordKind>data</RecordKind>
  </Operator>
  <ContentElementConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:type="RecordListConfig" 
     Id="RecordList" HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010" 
     HandlerFunction="RecordListHandler">
     <RecordsPerPage>2</RecordsPerPage>
     <Page>0</Page>
   </ContentElementConfig>
</Request>

絞込みの取得の例

次の例にも、対話Webサービス・リクエストの3つの要素すべて(状態、演算子およびコンテンツ要素構成)が含まれます。この例は、以前に計算されたStateを使用して、フィルタ処理されたレコードの絞込みのリストをまずリクエストし、次にそれらの絞込みにおいて個々のレコードを計算してリストを表示します。

この例の説明は、次のとおりです。
  • フィルタStateは、前の例と同じく2つのレコード・フィルタによって表されます。
  • Operator要素も前の例と同じで、dataを表すものにレコードを制限します。
  • ContentElementConfig要素のタイプはNavigationMenuConfigです。これは、絞込み構成を取得するために使用されるすべてのサブ要素のコンテナです。グループ"Product"のExpose="true" (このグループの絞込みを計算して返すようにEndeca Serverにリクエストする)のRefinementGroupConfigも含まれます。さらに、RefinementGroupConfigには、レコードの2つの属性(ProductCategoryNameおよびProductName)のRefinementConfig要素のリストが含まれます。どちらにもExpose="true"があり、これらの属性の個々のレコードの計算とリスト表示をリクエストします。MaximumCount="10"は、各絞込みについて返すレコード数を指定します。
注意: この例では、絞込みをリクエストして、その基礎となるレコードを公開(リスト表示)する方法を示しています。絞込みの操作方法や対話Webサービスの使用方法の詳細は、「属性および絞込みの操作」を参照してください。
<Request xmlns:ns2="http://www.endeca.com/MDEX/lql_parser/types" 
   xmlns="http://www.endeca.com/MDEX/conversation/2/0">
 <State>
   <SelectedRefinementFilter Name="DimDate_MonthName" Spec="May"/>
   <SearchFilter Key="All">mountain</SearchFilter>
 </State>
 <Operator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RecordKindOperator">
   <RecordKind>data</RecordKind>
 </Operator>
 <ContentElementConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:type="NavigationMenuConfig" 
    Id="NavMenu" 
    HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010" 
    HandlerFunction="NavigationMenuHandler">
    <RefinementGroupConfig Name="Product" Expose="true">
      <RefinementConfig Name="ProductCategoryName" Expose="true" MaximumCount="10"/>
      <RefinementConfig Name="ProductName" Expose="true" MaximumCount="10"/>
    </RefinementGroupConfig>
 </ContentElementConfig>
</Request>

ブレッドクラムの取得の例

次の例は、スペル修正情報も返す検索問合せのブレッドクラムのリクエストに使用されます。このようなリクエストには、状態、演算子およびコンテンツ要素構成の3つのパーツをすべて含める必要があります。
  1. Oracle Endeca Serverに渡す必要のある初期状態(この例では空です)。
  2. SearchFilterを使用して、スペル修正と検索モードを要求する、ユーザーが実際に入力した検索語を指定するSearchOperatorタイプのOperator
  3. ContentElementConfigで表されるコンテンツ要素構成。この例では、(BreadCrumbConfigタイプを介して)ブレッドクラムをリクエストする構成と、(SearchAdjustmentConfigタイプを介して)スペル修正をリクエストする構成が含まれます。
    注意: 一般に、ContentElementConfig複合タイプには、AttributeGroupListConfigBreadCrumbConfig (次の例で示します)、LQLConfigRecordListConfigPropertyListConfigValueSearchConfigなどの多くのサブタイプを含めることができます。これらの各サブタイプは、ブレッドクラムを返すかどうか、レコードまたは属性のリストを返す方法、属性値の検索時に使用するオプションなどの特定の構成を指定します。
例に戻ると、次のように状態、演算子およびコンテンツ要素構成が含まれます。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
 <State/>
 <Operator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:type="SearchOperator" Within="false">
    <SearchFilter Mode="All" Key="PROD_NAME" Language="fr">
     envoy
    </SearchFilter>
 </Operator>
 <ContentElementConfig 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:type="BreadcrumbConfig" ReturnFullPath="true" 
    HandlerFunction="BreadcrumbHandler" 
    HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0"
    Id="Breadcrumbs"/>
 <ContentElementConfig
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:type="SearchAdjustmentConfig"
    HandlerFunction="SearchAdjustmentHandler"
    HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0"
    Id="SearchAdjustments"/>
 <PassThrough/>
</Request>

ブレッドクラムのリクエストの詳細は、「ブレッドクラムの使用」を参照してください。

EQL問合せの例

この例では、状態と演算子は前の例と同じですが、ContentElementConfigのタイプはLQLConfig (EQL文を使用した問合せの発行に使用する必要があるタイプ)です。EQL文の内容はLQLQueryStringに含まれます。

この例のEQL文は、次のアクションを実行します。
  • レコードのコーパスを、DimGeography_StateProvinceNameの値が同じレコード/割当てのグループに分けます。たとえば、MassachusettsのグループとVermontのグループが生成されることがあります。
  • 各グループ内で2つの計算を実行します。つまり、その州/地区で発生した取引数を計算し、その州/地区での個別の売上金額を合計します。
  • "results"というレポートを生成します。各州/地区の名前、州/地区の取引数、およびその地区の合計売上金額という3つの列があり、州/地区ごとに1行が含まれます。

EQLのその他の例や詳細は、Oracle Endeca Server EQLガイドを参照してください。

<Request xmlns:ns2="http://www.endeca.com/MDEX/lql_parser/types" 
    xmlns="http://www.endeca.com/MDEX/conversation/1/0">
  <State>
    <SelectedRefinementFilter Name="DimDate_MonthName" Spec="May"/>
    <SearchFilter Key="All">mountain</SearchFilter>
  </State>
  <Operator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RecordKindOperator">
    <RecordKind>data</RecordKind>
  </Operator>
  <ContentElementConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:type="LQLConfig" Id="EQL" 
   HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010" 
   HandlerFunction="LQLHandler">
		   <LQLQueryString>
           RETURN "results" AS SELECT COUNT(1) AS numtransactions, 
           SUM("FactSales_SalesAmount") AS totalsales 
           GROUP BY "DimGeography_StateProvinceName"
     </LQLQueryString>
  </ContentElementConfig>
</Request>