我正在开发Apache UIMA + Apache Solr集成。首先,我将Apache UIMA与eclipse集成在一起。我在eclipse中实现了NOUN短语注释器并运行了一些例子。
通过在句子中找到名词,它运作良好并给出了准确的结果。
现在我正在尝试使用Solr实现UIMA。我按照以下链接进行了相同的操作:
https://wiki.apache.org/solr/SolrUIMA
我已经在apache solr lib目录中导出了eclipse项目的工作JAR文件,并包含了其他必要的jar文件。
这是我的solrconfig xml更改:
<lib dir="../../../contrib/uima/lib" />
<lib dir="../../../contrib/uima/lucene-libs" />
<lib dir="../../../dist/" regex="solr-uima-\d.*\.jar" />
<lib dir="C:\apache-uima\lib" />
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.processor">uima</str>
</lst>
</requestHandler>
<updateRequestProcessorChain name="uima" default="true">
<processor class="org.apache.solr.uima.processor.UIMAUpdateRequestProcessorFactory">
<lst name="uimaConfig">
<lst name="runtimeParameters">
</lst>
<str name="analysisEngine">/desc/NounPhraseAnnotator.xml</str>
<bool name="ignoreErrors">false</bool>
<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.tutorial.NounPhraseAnnotation</str>
<lst name="mapping">
<str name="feature">nounText</str>
<str name="field">uimanounphrase</str>
</lst>
</lst>
</lst>
</lst>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
Schema.xml更改:
<field name="uimanounphrase" type="string" indexed="true" stored="true" multiValued="true" required="false"/>
然后我索引了一些文档并运行了solr实例。但是当我执行查询时,名词不会进入uimanounphrase字段。空值显示在该字段中。
答案 0 :(得分:0)
您必须先生成PEAR文件并进行安装。完成后,您可以将AE.xml添加到solr配置中以使其正常工作。
步骤1:从注释器实现生成PEAR文件。如果你有Eclipse的UIMA插件,你可以使用Eclipse来做到这一点。
步骤2:安装PEAR文件。您可以使用apache-uima包(runPearInstaller.bat)中提供的脚本。您还可以通过运行cvd.bat来测试您的pear文件是否正常工作。
步骤3:创建一个注释器引擎xml文件(例如:OpenNLP_AE.xml),您可以将其与solrconfig.xml集成
参考文献:https://uima.apache.org/doc-uima-pears.html。这个链接有关于如何执行上述操作的指示。
希望这有帮助。