【问题标题】:Getting a 404 for /solr/update/extract on Solr 1.4.1 & Tika 0.4在 Solr 1.4.1 和 Tika 0.4 上为 /solr/update/extract 获取 404
【发布时间】:2015-11-25 03:15:01
【问题描述】:
我已成功安装 Solr 1.4.1,但无法让 Tika 0.4(包含在 contrib/extraction 中)正常工作。尝试点击 http://localhost:8080/solr/ss/update/extract 时出现 404 错误(“ss”是我的核心)。
在 Solr 部署后,我已将所有 contrib/extraction jar 以及位于“dist”目录中的“solr-cell”jar 移到了 Solr 的 WEB-INF 目录中。
我上面使用的方法适用于 Solr 3.3,但 PDF 解析在 Tika 0.8 中被破坏,所以我决定恢复到 Solr 1.4.1 和 Tika 0.4。
我正在使用 Tomcat 7.0,如果有帮助的话。
【问题讨论】:
标签:
tomcat
solr
apache-tika
【解决方案1】:
我解决了这个问题。
我复制了多核目录(example/multicore 中的“core0”和“core1”),它们使用的是非常精简的 solrconfig.xml 版本。我参考了默认示例(位于 example/solr 中)并抓取了“update/extract”的“requestHandler”部分并将其放在我的 solrconfig.xml 的精简版本中,并在 Tomcat 中重新启动了 Solr Web 应用程序,现在文件解析完美。
我希望这对其他人有帮助。
【解决方案2】:
我一直在使用 django_haystack 和 Solr 5.3.1,在自定义 schema.xml 并遇到同样的问题时,我想补充一下 Travis 的答案。
您需要在 solrconfig.xml 中添加的行如下:
lucene版本定义下
<luceneMatchVersion>5.3.1</luceneMatchVersion>
添加这些库导入(我从示例文件中获取):
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
然后在任何已定义的requestHandler 附近添加requestHandler 为/update/extract
<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>
希望对你有帮助。