企业搜索引擎开发之连接器connector(十七)

本文描述连接器的提供与外界交互的servlet接口,连接器与外部是通过xml格式数据交互的

1)  获取所有连接类型

提交地址:http://localhost:8080/connector-manager/getConnectorList
提交方式:GET
返回数据:

<CmResponse> 
  <Info>Google Search Appliance Connector Manager ; Sun Microsystems Inc. Java HotSpot(TM) Client VM 1.6.0_45; Windows 2003 5.2 (x86)</Info>  
  <StatusId>0</StatusId>  
  <ConnectorTypes> 
    <ConnectorType>DBConnector</ConnectorType> 
  </ConnectorTypes> 
</CmResponse>

2) 获取创建连接实例表单html

提交地址:http://localhost:8080/connector-manager/getConfigForm?ConnectorType=DBConnector&Lang=zh
提交方式:GET

参数 ConnectorType 值为连接类型;Lang为返回语言

返回数据:

<?xml version="1.0" encoding="utf-8"?>

<CmResponse> 
  <StatusId>0</StatusId>  
  <ConfigureResponse> 
    <FormSnippet><![CDATA[<tr style='display: none'><td>
<script type='text/javascript'>
function getVisibility(disabled) {
if (disabled) { return 'hidden'; } else { return 'visible'; }
}
function setDisabledProperties(xslt, urlField, docIdField, lobField){
document.getElementById('xslt').disabled=xslt;
document.getElementById('documentURLField').disabled=urlField;
document.getElementById('documentIdField').disabled=docIdField;
document.getElementById('baseURL').disabled=docIdField;
document.getElementById('lobField').disabled=lobField;
document.getElementById('fetchURLField').disabled=lobField;
document.getElementById('documentURLFieldStar').style.visibility=getVisibility(urlField);
document.getElementById('documentIdFieldStar').style.visibility=getVisibility(docIdField);
document.getElementById('baseURLStar').style.visibility=getVisibility(docIdField);
document.getElementById('lobFieldStar').style.visibility=getVisibility(lobField);
}
</script>
</td></tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">JDBC Driver Classname</div><div style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="driverClassName" id="driverClassName"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">JDBC Connection URL</div><div style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="connectionUrl" id="connectionUrl"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">用户名</div><div style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="login" id="login"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">密码</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="password" size="50" name="password" id="password"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">SQL Query</div><div style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><textarea rows="10" cols="50" name="sqlQuery" id="sqlQuery"></textarea></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">Primary Keys (separated by comma)</div><div style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="primaryKeysString" id="primaryKeysString"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">Last Modified Date Field</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="lastModifiedDate" id="lastModifiedDate"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">Document Content</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style='text-align:right; 40px; float:left; margin-right:5px'><input type="radio" name="extMetadataType" value="noExt" id="extMetadataType_noExt" checked="checked" onclick="javascript:setDisabledProperties(false, true, true, true)"/></div><div style="float: left;"><label for="extMetadataType_noExt">Stylesheet for serving results</label></div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><textarea rows="10" cols="50" name="xslt" id="xslt"></textarea></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style='text-align:right; 40px; float:left; margin-right:5px'><input type="radio" name="extMetadataType" value="lob" id="extMetadataType_lob" onclick="javascript:setDisabledProperties(true, true, true, false)"/></div><div style="float: left;"><label for="extMetadataType_lob">BLOB or CLOB Field</label></div><div id="lobFieldStar" style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em; float: right; visibility: hidden;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="lobField" id="lobField" disabled="disabled"/></td>
</tr>
<tr valign="top"><td align="center"><div style="margin-left:45px; float: left;">Display URL Field</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="fetchURLField" id="fetchURLField" disabled="disabled"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style='text-align:right; 40px; float:left; margin-right:5px'><input type="radio" name="extMetadataType" value="url" id="extMetadataType_url" onclick="javascript:setDisabledProperties(true, false, true, true)"/></div><div style="float: left;"><label for="extMetadataType_url">Document URL Field</label></div><div id="documentURLFieldStar" style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em; float: right; visibility: hidden;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="documentURLField" id="documentURLField" disabled="disabled"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style='text-align:right; 40px; float:left; margin-right:5px'><input type="radio" name="extMetadataType" value="docId" id="extMetadataType_docId" onclick="javascript:setDisabledProperties(true, true, false, true)"/></div><div style="float: left;"><label for="extMetadataType_docId">Document ID Field</label></div><div id="documentIdFieldStar" style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em; float: right; visibility: hidden;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="documentIdField" id="documentIdField" disabled="disabled"/></td>
</tr>
<tr valign="top"><td align="center"><div style="margin-left:45px; float: left;">Base URL</div><div id="baseURLStar" style="text-align: right; color: red; font-weight: bold; margin-right: 0.3em; float: right; visibility: hidden;">*</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><input type="text" size="50" name="baseURL" id="baseURL" disabled="disabled"/></td>
</tr>
<tr valign="top"><td colspan="1" rowspan="1" style="white-space:nowrap"><div style="float: left;">Authorization SQL Query</div></td>
<td colspan="1" rowspan="1" style="white-space:nowrap"><textarea rows="10" cols="50" name="authZQuery" id="authZQuery"></textarea></td>
</tr>
]]></FormSnippet>  
    <ConnectorConfigXml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
          "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
  <!--
    Bean for encapsulation of all the configuration parameter needed for a
    working Database Connector instance.
  -->
  <bean id="db-connector-config" class="com.google.enterprise.connector.db.DBContext"
    parent="database-connector-defaults" singleton="false">

    <!--
      Parameter for fetching number of rows in a single call to the repository.
    -->
    <!--
    <property name="numberOfRows" value="500"></property>
    -->

    <!--
      Replace the minValue with minimum key value when configuring the connector
      with with parameterized query.  Default value -1 is for minimum value
      comparison with the result set key values for the first time to compute
      the next highest order key.
    -->
    <!--
    <property name="minValue" value="-1"></property>
    -->

    <!--
      Flag to determine whether the SQL query is parameterized.
    -->
    <!--
    <property name="parameterizedQueryFlag" value="true"></property>
    -->

    <!--
      Flag to specify whether NULL values sort high or low in ORDER BY queries.
      This can usually be determined by examining the DatabaseMetadata.
      However, if that information is unavailable or incorrect, you can
      explicitly specify the ordering here.
    -->
    <!--
    <property name="nullsAreSortedLow" value="true"></property>
    -->

    <!--
      A java.text.Collator implementation that mimics the sorting done by
      the database ORDER BY clause specified in the Traversal SQL query
      for text values (CHAR, VARCHAR, etc).
      By default, the connector uses the Collator for the current default
      locale, with TERTIARY strength (case and accent sensitive), and
      CANONICAL_DECOMPOSITION of accented characters.
      See CollatorConfiguration examples in the Database connector Wiki:
      http://code.google.com/p/google-enterprise-connector-database/wiki/ConfiguringCollator
    -->
    <!--
      This example uses the java.text.Collator static factory method to
      get a Collator for the current default locale, then set the strength
      to be case-sensitive and accent-sensitive.
    -->
    <!--
    <property name="collator">
      <bean class="java.text.Collator" factory-method="getInstance">
        <property name="strength">
          <util:constant static-field="java.text.Collator.TERTIARY"/>
        </property>
        <property name="decomposition">
          <util:constant static-field="java.text.Collator.CANONICAL_DECOMPOSITION"/>
        </property>
      </bean>
    </property>
    -->
  </bean>
</beans>
]]></ConnectorConfigXml> 
  </ConfigureResponse> 
</CmResponse>

3)  创建连接器实例

提交地址:http://localhost:8080/connector-manager/setConnectorConfig
提交方式:POST
提交数据:

<ConnectorConfig>
  <Lang>zh</Lang>
  <ConnectorName>default_collectionName_dbconnector_1401727454046</ConnectorName>
  <ConnectorType>DBConnector</ConnectorType>
  <Update>false</Update>
  <Param name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <Param name="connectionUrl" value="jdbc:mysql://localhost:3306/hedgehog?useUnicode=true&amp;characterEncoding=utf-8"/>
  <Param name="login" value="root"/>
  <Param name="password" value="admin"/>
  <Param name="sqlQuery" value="select * from biz_document"/>
  <Param name="primaryKeysString" value="docID"/>
  <Param name="lastModifiedDate" value="doc_crawl_date"/>
  <Param name="extMetadataType" value="noExt"/>
  <Param name="xslt" value=""/>
  <Param name="authZQuery" value=""/>
  <Param name="ctl00$PageBody$Button1" value="确定"/>
</ConnectorConfig>

返回数据:

<CmResponse> 
  <StatusId>0</StatusId> 
</CmResponse>

4) 设置调度配置信息

提交地址:http://localhost:8080/connector-manager/setSchedule
提交方式:POST
提交数据:

<ConnectorSchedules>
  <ConnectorName>default_collectionName_dbconnector_1401727454046</ConnectorName>
  <disabled>true</disabled>
  <load>1000</load>
  <RetryDelayMillis>5000</RetryDelayMillis>
  <TimeIntervals>0-0</TimeIntervals>
</ConnectorSchedules>

返回数据:

<CmResponse>
  <StatusId>0</StatusId>
</CmResponse>

5) 获取调度配置信息

http://127.0.0.1:8080/connector-manager/getSchedule?ConnectorName=default_collectionName_dbconnector_1401727454046

提交方式:GET

参数 ConnectorName 值为连接实例名

返回数据:

<CmResponse> 
  <StatusId>0</StatusId>  
  <ConnectorStatus> 
    <ConnectorName>default_collectionName_dbconnector_1401727454046</ConnectorName>  
    <ConnectorType>DBConnector</ConnectorType>  
    <Status>0</Status>  
    <ConnectorSchedules>#default_collectionName_dbconnector_1401727454046:1000:5000:0-0</ConnectorSchedules> 
  </ConnectorStatus> 
</CmResponse>

6) 获取连接实例状态

提交地址:http://127.0.0.1:8080/connector-manager/getConnectorStatus?ConnectorName=default_collectionName_dbconnector_1401727454046
提交方式:GET

参数 ConnectorName 值为连接实例名

返回数据:

<CmResponse> 
  <StatusId>0</StatusId>  
  <ConnectorStatus> 
    <ConnectorName>default_collectionName_dbconnector_1401727454046</ConnectorName>  
    <ConnectorType>DBConnector</ConnectorType>  
    <Status>0</Status>  
    <ConnectorSchedules version="3">#default_collectionName_dbconnector_1401727454046:1000:5000:0-0</ConnectorSchedules> 
  </ConnectorStatus> 
</CmResponse>

7) 获取连接实例配置信息

提交地址:http://127.0.0.1:8080/connector-manager/getConnectorConfig?ConnectorName=default_collectionName_dbconnector_1401727454046

提交方式:GET

参数 ConnectorName 值为连接实例名

返回数据:(编码)

<CmResponse>
  <StatusId>0</StatusId>
  <ConfigureResponse>
    <Param name="googlePropertiesVersion" value="3"/>
    <Param name="sqlQuery" value="select * from biz_document"/>
    <Param name="authZQuery" value=""/>
    <Param name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <Param name="extMetadataType" value="noExt"/>
    <Param name="password" value="admin"/>
    <Param name="primaryKeysString" value="docID"/>
    <Param name="xslt" value=""/>
    <Param name="connectionUrl" value="jdbc:mysql://localhost:3306/hedgehog?useUnicode=true&characterEncoding=utf-8"/>
    <Param name="lastModifiedDate" value="doc_crawl_date"/>
    <Param name="login" value="root"/>
    <Param name="ctl00$PageBody$Button1" value="确定"/>
  </ConfigureResponse>
</CmResponse>

8)设置调度配置信息(启动连接器实例) 

提交地址:http://localhost:8080/connector-manager/setSchedule
提交方式:POST
提交数据:

<ConnectorSchedules>
  <ConnectorName>default_collectionName_dbconnector_1401727454046</ConnectorName>
  <load>1000</load>
  <RetryDelayMillis>5000</RetryDelayMillis>
  <TimeIntervals>0-0</TimeIntervals>
</ConnectorSchedules>

返回数据:

<CmResponse>
  <StatusId>0</StatusId>
</CmResponse>

9) 停止连接器实例 

提交地址:http://127.0.0.1:8080/connector-manager/stopConnector?ConnectorName=default_collectionName_dbconnector_1401339529599
提交方式:GET
返回数据:

<CmResponse>
  <StatusId>0</StatusId>
  <ConnectorStatus>
    <ConnectorName>default_collectionName_dbconnector_1401339529599</ConnectorName>
    <ConnectorType>DBConnector</ConnectorType>
    <Status>0</Status>
  </ConnectorStatus>
</CmResponse>

10) 移除连接器实例 

提交地址:http://127.0.0.1:8080/connector-manager/removeConnector?ConnectorName=default_collectionName_dbconnector_1401339529599
提交方式:GET
返回数据:

<CmResponse>
  <StatusId>0</StatusId>
</CmResponse>

---------------------------------------------------------------------------

本系列企业搜索引擎开发之连接器connector系本人原创

转载请注明出处 博客园 刺猬的温驯

本人邮箱: chenying998179@163#com (#改为.)

本文链接 http://www.cnblogs.com/chenying99/p/3726862.html 

原文地址:https://www.cnblogs.com/chenying99/p/3726862.html