将 Apache TIKA 和 Solr Cell 与 Solr 集成以索引 pdf 和 word 文档

Integrate Apache TIKA and Solr Cell with Solr to index pdf and word documents

我正在做一个 POC,使用 solr 搜索引擎索引 pdf 和 word 文档。我试图搜索有关详细级别的信息或文章,但没有 get\found 任何详细的文章来做。我发现的是使用一些 solr 包提供的示例。那不是我要求的。

我目前的信息是可以使用 Solr Cell 和 Apache Tika 来索引 pdf 文档。

从一些 stakeoverflow 我发现 link http://wiki.apache.org/solr/ExtractingRequestHandler 但它不是教程,也没有执行我想做的步骤。另外,我想使用 solrnet 从 .net 应用程序调用 solr。

我使用的是 Solr 5.1 版本。

我提供了示例代码,我 运行 来自 solr 参考文档,如下所示

bin/solr -e techproducts

它启动了带有 techproducts 核心的示例 solr 实例。之后我 运行 下面的命令索引 pdf 文档。

curl "http://localhost:8983/solr/techproducts/update/extract?literal.id=doc1&commit=true" -F "myfile=@example/exampledocs/solr-word.pdf"

效果很好。

之后,我从 tomcat 托管的 solr 服务器创建了新核心,然后我尝试 运行 相同的 curl 命令和接收器错误。 我在 solrconfig.xml

中添加了以下请求处理程序代码
<requestHandler name="/update/extract" 
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="lowernames">true</str>
      <str name="uprefix">ignored_</str>

      <!-- capture link hrefs but ignore div attributes -->
      <str name="captureAttr">true</str>
      <str name="fmap.a">links</str>
      <str name="fmap.div">ignored_</str>
    </lst>
  </requestHandler>

脚本:

C:\tomcat-solr>curl "http://localhost:8090/solr/Core3/update/extract?literal.id=
    doc1&commit=true" -F "myfile=@example/exampledocs/solr-word.pdf"

错误:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="error"><str name="msg">Error loading class 'solr.extraction.Extractin
gRequestHandler'</str><str name="trace">org.apache.solr.common.SolrException: Er
ror loading class 'solr.extraction.ExtractingRequestHandler'
        at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.
java:492)
        at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.
java:423)
        at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:561)
        at org.apache.solr.core.PluginBag$LazyPluginHolder.createInst(PluginBag.
java:343)
        at org.apache.solr.core.PluginBag$LazyPluginHolder.get(PluginBag.java:32
8)
        at org.apache.solr.core.PluginBag.get(PluginBag.java:130)
        at org.apache.solr.handler.RequestHandlerBase.getRequestHandler(RequestH
andlerBase.java:219)
        at org.apache.solr.core.SolrCore.getRequestHandler(SolrCore.java:1263)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilte
r.java:382)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilte
r.java:220)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:106)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAcce
ssLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:518)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1091)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:668)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.pr
ocess(Http11NioProtocol.java:223)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpo
int.java:1517)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoin
t.java:1474)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh
read.java:61)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: solr.extraction.ExtractingRequestHa
ndler
        at java.net.URLClassLoader.run(Unknown Source)
        at java.net.URLClassLoader.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.net.FactoryURLClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.
java:476)
        ... 27 more
</str><int name="code">500</int></lst>
</response>

我错过了什么吗?

查看错误,似乎 apache-solr-cell jar 及其依赖项在 Solr 库的提取库中丢失。

<lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" />
<lib dir="../../contrib/extraction/lib" />

添加这些文件...