Solr自定義更新請(qǐng)求處理器:UIMA集成

2018-11-20 14:13 更新

您可以將 Apache 非結(jié)構(gòu)化信息管理體系結(jié)構(gòu)(UIMA)與 Solr 進(jìn)行集成。通過 UIMA,您可以定義分析引擎(Analysis Engines)的自定義管道,以增量方式將元數(shù)據(jù)作為注釋添加到文檔中。 

Solr 如何配置 UIMA

SolrUIMA UpdateRequestProcessor 是一個(gè)自定義的更新請(qǐng)求處理器,它將文檔編入索引,將它們發(fā)送到 UIMA 管道,然后返回富集了指定元數(shù)據(jù)的文檔。要為 Solr配置 UIMA,請(qǐng)按照下列步驟操作:

  1. 將 solr-uima-VERSION.jar(在 /solr-VERSION/dist/ 中)及其庫(kù)(在 contrib/uima/lib 中)復(fù)制到 Solr 庫(kù)目錄中,或者將 solrconfig.xml 中的 <lib/> 標(biāo)記適當(dāng)?shù)卦O(shè)置以指向這些 jar 文件:
    <lib dir="../../contrib/uima/lib" />
    <lib dir="../../dist/" regex="solr-uima-\d.*\.jar" />
  2. 修改 schema.xml,添加所需的元數(shù)據(jù)字段,為類型、索引、儲(chǔ)和多值選項(xiàng)指定適當(dāng)?shù)闹?。例如?pre lang="javascript" style="max-width: 100%;"><field name="language" type="string" indexed="true" stored="true" required="false"/> <field name="concept" type="string" indexed="true" stored="true" multiValued="true" required="false"/> <field name="sentence" type="text" indexed="true" stored="true" multiValued="true" required="false" />
  3. 將以下代碼片段添加到 solrconfig.xml 中:
    <updateRequestProcessorChain name="uima">
      <processor class="org.apache.solr.uima.processor.UIMAUpdateRequestProcessorFactory">
        <lst name="uimaConfig">
          <lst name="runtimeParameters">
            <str name="keyword_apikey">VALID_ALCHEMYAPI_KEY</str>
            <str name="concept_apikey">VALID_ALCHEMYAPI_KEY</str>
            <str name="lang_apikey">VALID_ALCHEMYAPI_KEY</str>
            <str name="cat_apikey">VALID_ALCHEMYAPI_KEY</str>
            <str name="entities_apikey">VALID_ALCHEMYAPI_KEY</str>
            <str name="oc_licenseID">VALID_OPENCALAIS_KEY</str>
          </lst>
          <str name="analysisEngine">/org/apache/uima/desc/OverridingParamsExtServicesAE.xml</str>
          <!-- Set to true if you want to continue indexing even if text processing fails.
               Default is false. That is, Solr throws RuntimeException and
               never indexed documents entirely in your session. -->
          <bool name="ignoreErrors">true</bool>
          <!-- This is optional. It is used for logging when text processing fails.
               If logField is not specified, uniqueKey will be used as logField.
          <str name="logField">id</str>
          -->
          <lst name="analyzeFields">
            <bool name="merge">false</bool>
            <arr name="fields">
              <str>text</str>
            </arr>
          </lst>
          <lst name="fieldMappings">
            <lst name="type">
              <str name="name">org.apache.uima.alchemy.ts.concept.ConceptFS</str>
              <lst name="mapping">
                <str name="feature">text</str>
                <str name="field">concept</str>
              </lst>
            </lst>
            <lst name="type">
              <str name="name">org.apache.uima.alchemy.ts.language.LanguageFS</str>
              <lst name="mapping">
                <str name="feature">language</str>
                <str name="field">language</str>
              </lst>
            </lst>
            <lst name="type">
              <str name="name">org.apache.uima.SentenceAnnotation</str>
              <lst name="mapping">
                <str name="feature">coveredText</str>
                <str name="field">sentence</str>
              </lst>
            </lst>
          </lst>
        </lst>
      </processor>
      <processor class="solr.LogUpdateProcessorFactory" />
      <processor class="solr.RunUpdateProcessorFactory" />
    </updateRequestProcessorChain>
    您需要注意以下幾點(diǎn):
    • VALID_ALCHEMYAPI_KEY 是您的 AlchemyAPI 訪問密鑰。您需要注冊(cè)一個(gè) AlchemyAPI 訪問秘鑰以使用 AlchemyAPI 服務(wù),注冊(cè)地址如下: http : //www.alchemyapi.com/api/register.html。
    • VALID_OPENCALAIS_KEY 是您的 Calais 服務(wù)密鑰(Calais Service Key)。您需要注冊(cè) Calais 服務(wù)密鑰才能使用 Calais 服務(wù),注冊(cè)地址如下:http : //www.opencalais.com/apikey。
    • analysisEngine 必須在類路徑的指定路徑中包含一個(gè) AE 描述符。
    • analyzeFields 必須包含需要由 UIMA 分析的輸入字段。如果 merge=true 那么他們的內(nèi)容將被合并和分析一次。
    • 字段映射描述哪些類型的功能應(yīng)該在字段中進(jìn)行。
  4. 在您的 solrconfig.xml 替換現(xiàn)有的默認(rèn) UpdateRequestHandler 或創(chuàng)建一個(gè)新的 UpdateRequestHandler:
    <requestHandler name="/update" class="solr.XmlUpdateRequestHandler">
      <lst name="defaults">
        <str name="update.chain">uima</str>
      </lst>
    </requestHandler>

一旦您完成了配置,您的文檔將在索引時(shí)自動(dòng)豐富指定的字段。

有關(guān) Solr UIMA 集成的更多信息,請(qǐng)參閱:https://wiki.apache.org/solr/SolrUIMA。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)