codecamp

Solr自定义更新请求处理器:UIMA集成

您可以将 Apache 非结构化信息管理体系结构(UIMA)与 Solr 进行集成。通过 UIMA,您可以定义分析引擎(Analysis Engines)的自定义管道,以增量方式将元数据作为注释添加到文档中。 

Solr 如何配置 UIMA

SolrUIMA UpdateRequestProcessor 是一个自定义的更新请求处理器,它将文档编入索引,将它们发送到 UIMA 管道,然后返回富集了指定元数据的文档。要为 Solr配置 UIMA,请按照下列步骤操作:

  1. 将 solr-uima-VERSION.jar(在 /solr-VERSION/dist/ 中)及其库(在 contrib/uima/lib 中)复制到 Solr 库目录中,或者将 solrconfig.xml 中的 <lib/> 标记适当地设置以指向这些 jar 文件:
    <lib dir="../../contrib/uima/lib" />
    <lib dir="../../dist/" regex="solr-uima-\d.*\.jar" />
  2. 修改 schema.xml,添加所需的元数据字段,为类型、索引、储和多值选项指定适当的值。例如:
    <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>
    您需要注意以下几点:
    • VALID_ALCHEMYAPI_KEY 是您的 AlchemyAPI 访问密钥。您需要注册一个 AlchemyAPI 访问秘钥以使用 AlchemyAPI 服务,注册地址如下: http : //www.alchemyapi.com/api/register.html。
    • VALID_OPENCALAIS_KEY 是您的 Calais 服务密钥(Calais Service Key)。您需要注册 Calais 服务密钥才能使用 Calais 服务,注册地址如下:http : //www.opencalais.com/apikey。
    • analysisEngine 必须在类路径的指定路径中包含一个 AE 描述符。
    • analyzeFields 必须包含需要由 UIMA 分析的输入字段。如果 merge=true 那么他们的内容将被合并和分析一次。
    • 字段映射描述哪些类型的功能应该在字段中进行。
  4. 在您的 solrconfig.xml 替换现有的默认 UpdateRequestHandler 或创建一个新的 UpdateRequestHandler:
    <requestHandler name="/update" class="solr.XmlUpdateRequestHandler">
      <lst name="defaults">
        <str name="update.chain">uima</str>
      </lst>
    </requestHandler>

一旦您完成了配置,您的文档将在索引时自动丰富指定的字段。

有关 Solr UIMA 集成的更多信息,请参阅:https://wiki.apache.org/solr/SolrUIMA。

Solr内容流
关于Solr搜索的概述
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

SolrCloud

SolrCloud配置和参数

如何使用AsciiDoc

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }