【问题标题】:Integrate Apache TIKA and Solr Cell with Solr to index pdf and word documents将 Apache TIKA 和 Solr Cell 与 Solr 集成以索引 pdf 和 word 文档
【发布时间】:2015-04-28 11:16:09
【问题描述】:

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

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

从一些 stakeoverflow 中,我找到了链接 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$1.run(Unknown Source)
        at java.net.URLClassLoader$1.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>

我错过了什么吗?

【问题讨论】:

  • ExtractingRequestHandler 页面对我来说看起来非常详细和全面。跟不上怎么办?当你跟随它时什么不起作用?
  • @Gagravarr - 我是 solr 的新手。我已经更新了我的问题。请查看并提供您的 cmets。

标签: solr solrnet apache-tika solr-cell


【解决方案1】:

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

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

添加这些文件...

【讨论】:

  • 我错过了那些文件。但我对这些路径有一个疑问。就solr而言,路径“C:\tomcat-solr\contrib\extraction\lib”和路径“C:\tomcat-solr\dist”的意义是什么?
  • 这些罐子用于提取。更多详情请查看cwiki.apache.org/confluence/display/solr/…
  • 顺便说一句,如果答案有助于解决问题,请接受或投票:)
  • 接受了你的回答。我是 solr 的新手。所以,我问了两个文件夹“contrib”和“dist”的意义。请分享一些关于它的更多细节?
  • contrib 就像 dataimporthandler 一样,支持直接从 SQL 数据库进行完整和增量索引,以及本地或 REST 可访问的 XML 文件...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 2012-04-13
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
相关资源
最近更新 更多