用Solr对PDF进行索引

问题描述 投票:15回答:6

谁能给我指点一下教程。

我对Solr的主要经验是索引CSV文件。但是我找不到任何简单的指导教程来告诉我,我需要做什么来索引pdfs。

我看到过这个。http:/wiki.apache.orgsolrExtractingRequestHandler...

但这对我来说意义不大。我需要安装Tika吗?

我很迷茫--请帮助我

solr full-text-search solrj apache-tika solr-cell
6个回答
17
投票

有了solr-4.9(目前的最新版本),从pdfs、电子表格(xls、xlxs系列)、演示文稿(ppt、ppts)、文档(doc、txt等)等丰富的文档中提取数据变得相当简单。此处 包含了一个基本的solr模板项目,可以让你快速入门。

必要的配置更改如下。

  1. 改变 solrConfig.xml 包括以下几行。

    <lib dir="<path_to_extraction_libs>" regex=".*\.jar" /> <lib dir="<path_to_solr_cell_jar>" regex="solr-cell-\d.*\.jar" />

创建一个请求处理程序,如下所示。

<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults" /> </requestHandler>

2.将solrExample中必要的jar添加到你的项目中。

3.根据你的需要定义模式,并启动一个类似于.NET的查询。

curl "http://localhost:8983/solr/collection1/update/extract?literal.id=1&literal.filename=testDocToExtractFrom.txt&literal.created_at=2014-07-22+09:50:12.234&commit=true" -F "[email protected]"

进入GUI门户,查询查看索引内容。

如果你面临任何问题,请告诉我。


4
投票

你可以使用DataImportHandler。DataImortHandle将在solrconfig.xml中定义,DataImportHandler的配置应该在不同的XML配置文件(data-config.xml)中实现。

对于pdf的索引,你可以

1.)用以下方法抓取目录,找到所有的pdf文件 FileListEntityProcessor

2.) 从 "contentindex"-XML文件中读取pdf文件,使用 XPathEntityProcessor

如果你有相关的pdf的列表,请使用TikaEntityProcessor看这里。http:/solr.plen20110404indexing-files-like-doc-pdf-solr-and-tika-integration。 (以ppt为例)和这个 Solr:数据导入处理程序和solr单元格。


2
投票

最难的部分是从PDF中获取元数据,使用类似于 光圈 简化了这一点。一定有很多这样的工具

Aperture是一个Java框架,用于从PDF文件中提取和查询全文内容和元数据。

Apeture从PDF中抓取元数据,并将其存储在xml文件中。

我用lxml解析了xml文件,并把它们发布到solr上。


0
投票

使用Solr,ExtractingRequestHandler。这使用Apache-Tika来解析pdf文件。我相信,它可以拉出元数据等。你也可以通过自己的元数据。提取请求处理程序(ExtractingRequestHandler)


0
投票
public class SolrCellRequestDemo {
public static void main (String[] args) throws IOException, SolrServerException {
SolrClient client = new
HttpSolrClient.Builder("http://localhost:8983/solr/my_collection").build();
ContentStreamUpdateRequest req = new
ContentStreamUpdateRequest("/update/extract");
req.addFile(new File("my-file.pdf"));
req.setParam(ExtractingParams.EXTRACT_ONLY, "true");
NamedList<Object> result = client.request(req);
System.out.println("Result: " +enter code here result);
}

这可能会有帮助。


0
投票

Apache Solr现在可以索引所有类型的二进制文件,如PDF,Words等......检查出这个文档。https:/lucene.apache.orgsolrguide8_5uploading-data-with-solr-cell-using-apache-tika.html。

© www.soinside.com 2019 - 2024. All rights reserved.