2017-07-02 48 views
0

當我嘗試從ftp服務器獲取文件以使用tikaEntityProcessor提取一些元數據時,我遇到了一些麻煩。在TikaEntity處理器中從Ftp服務器獲取文件時發生Solr DIH故障。我如何將憑據傳遞給UrlDataSource?

我需要一種方法將某些憑據傳遞給UrlDataSource。

請問任何人,請告訴我該怎麼做?

值的示例:

url: ftp://localhost/Oreilly.Mercurial.The.Definitive.Guide.Jun.2009.pdf

ftp user: alex

ftp password: pass

這是我Data-config.xml

<dataConfig> 
    <dataSource type="BinURLDataSource" name="binSource" 
     baseUrl="ftp://localhost:21/" onError="skip" />  
    <dataSource type="JdbcDataSource" 
       driver="org.postgresql.Driver" 
       url="jdbc:postgresql://localhost:5432/files" 
       user="postgres" 
       password="admin" 
       readOnly="true" 
       autoCommit="false" 
       transactionIsolation="TRANSACTION_READ_COMMITTED" 
       holdability="CLOSE_CURSORS_AT_COMMIT"/> 
    <document> 
     <entity name="item" query="select* from filesfromftp" 
       deltaQuery="select url from filesfromftp" 
       rootEntity="false" 
       transformer="RegexTransformer">    
       <field column="url" name="id" />    
       <entity name="tika-test" 
         processor="TikaEntityProcessor" 
         url="${item.url}" 
         format="none" 
         dataSource="binSource"       
         onError="skip">      
        <field column="Author" name="author" meta="true"/> 
        <field column="title" name="title" meta="true"/> 
        <field column="pdf:docinfo:title" name="title" meta="true"/> 
        <field column="xmpTPg:NPages" name="numPages" meta="true"/> 
        <field column="Creation-Date" name="createdDate" meta="true"/> 
       </entity> 
     </entity> 
    </document> 
</dataConfig> 

當我執行數據導入處理程序我得到這個錯誤:

Exception in entity : tika-test:org.apache.solr.handler.dataimport.DataImportHandlerException: Exception in invoking url ftp://localhost/jnioche-bristoljavameetup20150310-150311041443-conversion-gate01.pdf Processing Document # 1 
    at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:69) 
    at org.apache.solr.handler.dataimport.BinURLDataSource.getData(BinURLDataSource.java:89) 
    at org.apache.solr.handler.dataimport.BinURLDataSource.getData(BinURLDataSource.java:38) 
    at org.apache.solr.handler.dataimport.TikaEntityProcessor.nextRow(TikaEntityProcessor.java:128) 
    at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:244) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:475) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:516) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414) 
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329) 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232) 
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416) 
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:475) 
    at org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:458) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: sun.net.ftp.FtpLoginException: Invalid username/password 
    at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:308) 
    at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:393) 
    at org.apache.solr.handler.dataimport.BinURLDataSource.getData(BinURLDataSource.java:86) 
    ... 12 more 

請,我怎麼能建立一個與SolrDIH內的FtpServer連接?

有沒有辦法將一些憑據傳遞給UrlDataSource?

回答

0

有一個補丁可用here爲此目的。這是非常古老的,但你可以將它移植到更新的版本。看看最近的評論,顯示如何使用身份驗證創建自定義URLDataSource。

相關問題