2015-10-22 45 views
3

嗨同行SOLR開發人員,SOLR tika處理器不抓取我的PDF文件熟知

我有一些pdf文件,其中有一些電路圖。有些文字垂直寫在電路上。例如,有一個字「結連接器」標記在PDF,垂直地通過電路拉伸,其中當索引到SOLR變爲「Ĵ加利(C T)I O N c個O 4 N N個E(C T)öR」。

由於顯而易見的原因,搜索沒有發生在給定的關鍵字上。是否有可能更改底層處理器?

我試圖在獨立的java類中使用'itextpdf'將PDF轉換爲文本,'itextpdf'打印足夠的文本。當我使用'Apache Tika'閱讀相同的pdf文件時,我發現很多詞語都是用空格分開的,很明顯,與SOLR相似。

是否有可能開發和集成一個'itextpdf'實體處理器,例如?或任何其他自定義實體處理器?

我最糟糕的另一種方式是使用solrj並閱讀pdf並對其進行索引,但如前所述,由於環境和設計限制,這將成爲我最差的情況。

使用SOLR 5.3.1

我使用的是蒂卡處理器,現在,

<dataConfig> 
<dataSource type="BinFileDataSource" /> 
<document> 
    <entity name="tika-test" processor="TikaEntityProcessor" 
      url="C:\Users\12345\Downloads\workspace\Playground\circuits.pdf" format="text"> 
      <field column="Author" name="creator" meta="true"/> 
      <field column="title" name="producer" meta="true"/> 
      <field column="text" name="text"/> 
    </entity> 
</document> 

的方式SOLR索引文件是這樣的,

P奧爾嗖RC(E T)他英尺dえてRRE ntandW¯¯IRE樂SS d OOR大號玉珠C於TRO升轉向信號閃爍< 6 -5> DHEJ T-OV-R DJFÇombination中號ETER

+0

所以你說iText比你當前使用的文本提取器做得更好。那麼問題是什麼?爲什麼不使用使用iText提取的文本?你不能將純文本提供給SOLR嗎? –

+0

謝謝!用更少的細節編輯這個問題。我可以做更大的規模,我正在尋找一個定製的實體處理器,如果這甚至是可能的。 –

+0

好的,問題有所改善(值得投票)。我不知道答案,但是如果你不能將PDF解析爲帶有iText的文本,並且將文本交給一個爲其編制索引的工具,那將會讓我感到驚訝。我對這個問題的答案也很感興趣。 –

回答

3

最簡單的(而不是真正最壞的情況下的替代)的方法是將寫一個小itextpdf提交模塊自己,即掃描目錄和使用SolrJ將提取的文本提交給Solr。這將允許在將來更容易定製和並行化索引過程(在多於一個服務器上運行提取和索引過程)。

Tika萃取物處理程序可能會在未來的某個時間從Solr核心轉移到單獨的索引工具中。

將可能編寫一個單獨的守護進程,您可以提交文件並在將來具有不同的索引策略,但尚未完成任何與此相關的工作。

+0

謝謝你的迴應。它實際上是'我'的最壞情況,而不是最壞的情況,因爲這樣:)這裏的環境很複雜,因此,如果有一種方法來部署自定義實體處理器,那將是我絕對的解決方案。 –

+0

從[TikaEntityProcessor的源代碼]開始(https://svn.apache.org/repos/asf/lucene/dev/trunk/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/) dataimport/TikaEntityProcessor.java)並將其修改爲使用iTextPDF。這個類不是很大,所以只要你熟悉Java,它應該是非常簡單的。請記住,您必須將生成的jar文件加載到Solr中,就像您對extras進行操作一樣。我通常做一個Solr + Lucene的後臺結賬,並在創建結束jar之前進行開發。但請記住DIH可能會消失。 – MatsLindh

+0

謝謝你的指針。這就是我希望做的。我投了票。但經過一些激烈的測試後,iTextPDF打印出一些其他電路PDF更糟糕。就像,我需要選擇最差的PDF閱讀器。我仍在研究其他幾個PDF解析器,看看他們是否可以閱讀我的PDF文件。 –