2011-07-14 25 views
14

索引PDF任何人都可以點我的教程。使用Solr

我與Solr的主要經驗是索引的CSV文件。但我無法找到任何簡單的指令/教程,告訴我,我需要做的索引PDF文件。

我看到這個:http://wiki.apache.org/solr/ExtractingRequestHandler

但它使很少了意義。我需要安裝Tika嗎?

Im lost - please help

回答

1

最難的部分是從PDF中獲取元數據,使用像Aperture這樣的工具簡化了這一點。必須有這些工具

光圈是提取和查詢從PDF文件的全文內容和元數據的Java框架

Apeture一把抓起PDF文件的元數據噸,並將其存儲在XML文件中。

我解析使用lxml的XML文件中,張貼到Solr

4

您可以使用dataImportHandler。該DataImortHandle將在solrconfig.xml中定義的DataImportHandler的配置應該在不同的XML配置文件(數據-config.xml中)

實現索引PDF文件,你可以

1)抓取目錄中的FileListEntityProcessor

2)在閱讀PDF格式的從「內容/索引」-XML文件,使用XPathEntityProcessor

如果您有相關的PDF文件的列表中,使用TikaEntityProcessor 找到所有的PDF文件看看這個http://solr.pl/en/2011/04/04/indexing-files-like-doc-pdf-solr-and-tika-integration/(以ppt爲例)Solr : data import handler and solr cell

+0

是否有可能以某種方式查看pdf的解析內容? (我的意思是原始文本) – zygimantus

+1

您可以將內容字段設置爲'stored = true'。如果您在solr上搜索文檔,則可以打印出存儲的字段以進行預覽或語法高亮顯示。 –

+0

你的意思是這個設置是可用的參數或者它是一個配置? – zygimantus

0

使用Solr的,ExtractingRequestHandler。這使用Apache-Tika解析pdf文件。我相信它可以提取元數據等。你也可以通過你自己的元數據。 Extracting Request Handler

14

使用Solr-4.9(最新版本截至目前),從如PDF,電子表格豐富的文檔中提取數據(XLS,xlxs家庭),演示文稿(PPT,個百分點),文檔(DOC,TXT等)有變得相當簡單。 從 here在下載的文件提供的示例代碼示例包含一個基本的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中所需的罐子添加到您的項目中。

3.Define模式按您的需求和火象的查詢:

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門戶和查詢看到索引的內容。

讓我知道你是否面臨任何問題。

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); 
} 

這可能有所幫助。