MainJavadocExample
FederatedSearchSource Demo

This demo shows a federated search against two different types of Search Sources, the CBSNews site used in the HTMLSearchSource demo and the Google Web Service SOAP source shown in the SOAPSearchSource demo.
A more comprehensive federated search demo is also available.


Keywords:  

Description of the configuration modules used in the federated seach demo.

XML Configuration for this demo:
Search Form configuration:

  <!-- ====================================================================== -->
  <!--  SearchForm for FederatedSearchSource demo.                            -->
  <!-- ====================================================================== -->
  <SearchForm name="FederatedSearchForm" category="FederatedNews" >
    <Field ID="KY" type="text" width="50" name="Keywords" />
  </SearchForm>


Display Form configuration:

    <!-- ======================================================================= -->
    <!--  DisplayForm for HTMLSearchSource:  uses XSLTResultRenderer             -->
    <!-- ======================================================================= -->
    <DisplayForm name="HTMLSourceDisplay" 
                rendererClass="com.raritantechnologies.quickstart.taglibrary.TableDisplayFormRenderer"
                bgcolor1="#ffffff" bgcolor2="#EDF3FE" >
      <ResultRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.XSLResultRenderer" 
                      align="left" valign="top" defaultString="&nbsp;" width="550">
        <Source name="CBSNews"      xslFile="BASE_PATH/WEB-INF/conf/CBSNews/CBSNewsDisplayTransform.xsl" />

        <!-- Google puts some html markup that must be cleaned up in the HTML layer -->
        <Source name="GoogleSOAP"   xslFile="BASE_PATH/WEB-INF/conf/Google/GoogleDisplayTransform.xsl" >
          <OutputFilter class="com.raritantechnologies.utils.filter.SequentialStringFilter" >
            <StringFilter class="com.raritantechnologies.utils.filter.ReplaceSubstringFilter" 
                          inPattern="&lt;" outPattern="<" replace="ALL" />
            <StringFilter class="com.raritantechnologies.utils.filter.ReplaceSubstringFilter" 
                          inPattern="&gt;" outPattern=">" replace="ALL" />
          </OutputFilter>
        </Source>
      </ResultRenderer>

    </DisplayForm>


Source Map Configuration:

  <Category ID="FederatedNews" name="FederatedNews"  >
    <Sources>
      <Source name="CBSNews" />
      <Source name="GoogleSOAP" />
    </Sources>
  </Category>


Search Source Configurations:

  <!-- ======================================================================== -->
  <!--    HTMLSearchSource: CBSNews.com                                         -->
  <!-- ======================================================================== -->
  <SourceType name="CBSNews" type="HTMLSearchSource" displayName="CBSNews.com" 
                sourceFactoryClass="com.raritantechnologies.federated.html.HTMLSearchSourceFactory" 
                queryProcessor="com.raritantechnologies.federated.html.HTMLQueryProcessor">
    <Fields>
      <Field ID="key" xPath="/SearchProcess/Step/params/param[@formName='searchString']/@value"/>
    </Fields>

    <SecurityModel>
      <search>Public</search>
    </SecurityModel>

    <SearchProcess>
      <Step type="getURL" URL="http://www.cbsnews.com/htdocs/search/search.php">
        <params>
          <param formName="num" value="10" />
          <param formName="offset" value="0" />
          <param formName="source" value="cbsnews" />
          <param formName="section" value="" />
          <param formName="type"    value="all" />
          <param formName="sp-s"    value="1" />
          <param formName="searchString" value="" />
          <param formName="x"    value="22" />
          <param formName="y"    value="8" />
        </params>
      </Step>
    </SearchProcess>

    <ScraperConfigFile>CBSNewsScraperConfig.xml</ScraperConfigFile>
    <OutputTransformer>CBSNewsTransform.xsl</OutputTransformer>
  </SourceType>


  <!-- ======================================================================= -->
  <!--    SOAPSearchSource: GoogleWebService                                   -->
  <!-- ======================================================================= -->
  <SourceType name="GoogleSOAP" type="SOAPSearchSource" displayName="Federated SOAP - Google"
              sourceFactoryClass="com.raritantechnologies.federated.SOAP.SOAPSearchSourceFactory" 
              queryProcessor="com.raritantechnologies.federated.SOAP.SOAPQueryProcessor" >

    <SOAPServiceDef
        targetObjectURI="http://api.google.com/search/beta2"
        xslTransform="BASE_PATH/WEB-INF/conf/Google/GoogleSOAPResponse.xsl" />

    <SOAPMethod methodName="ns1:doGoogleSearch" 
                namespace=""  
                SOAPAction="urn:GoogleSearchAction"
                responseXMLType="GoogleSearchResult"
                namespaceHost="urn:GoogleSearch" >

        <parameter name="key"            type="xsd:string"   value="ezC+bv9QFHIjUVV1qy69oMCJwjnDcuCW" />
        <parameter name="q"              type="xsd:string"   field="KY" />
        <parameter name="start"          type="xsd:int"      value="0" computeFrom="(START_REC-1)" />
        <parameter name="maxResults"     type="xsd:int"      value="10" />
        <parameter name="filter"         type="xsd:boolean"  value="true" />
        <parameter name="restrict"       type="xsd:string"   value="" />
        <parameter name="safeSearch"     type="xsd:boolean"  value="false" />
        <parameter name="lr"             type="xsd:string"   value="" />
        <parameter name="ie"             type="xsd:string"   value="latin1" />
        <parameter name="oe"             type="xsd:string"   value="latin1" />

        <ResponseProcess>
            <ResponseParameter path="/descendant::estimatedTotalResultsCount"
                           outputTo="TOTAL_DOCS" />
        </ResponseProcess>

    </SOAPMethod>

  </SourceType>