2017-09-24 23 views
0

是否可以使用DIH來索引MySQL和文本文件夾中的數據?我使用以下data-config文件:我們可以通過單個DIH將單個data_config文件中兩個不同數據源的數據編入索引嗎?

<dataConfig> 
    <dataSource name="test1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/ACL" user="root" 
       password="" /> 
    <dataSource type="BinFileDataSource" /> 
    <document> 
     <entity name="files" dataSource="null" rootEntity="false" 
       processor="FileListEntityProcessor" transformer="RegexTransformer" 
       baseDir="/home/shah/ResearchTestData/TestScore3" fileName="\.(txt)|(pdf)|(docx)" 
       onError="skip" 
       recursive="true"> 
      <field column="fileSize" name="size" /> 
      <field column="fileLastModified" name="lastModified" /> 
      <field column="file" name="fileName" regex="(.txt)" replaceWith=""/> 
      <entity name="documentImport" 
        processor="TikaEntityProcessor" 
        url="${files.fileAbsolutePath}" 
        format="text"> 
       <field column="text" name="Text" />   
      </entity> 
      <entity name="item" dataSource="test1" query="select PaperID,PID, Author from ACL.Test where PaperID='${files.file}'"> 
       <field column="PaperID" name="PaperID" /> 
       <field column="Author" name="Author" /> 
       <field column="PID" name="id" />    
      </entity>   
     </entity> 
    </document> 
</dataConfig> 

我想索引到的數據來自兩個不同的數據源,通過數據導入處理器的單核。

  1. 第一個數據源是一個包含文本文件元數據的Mysql。

  2. 第二個數據源包含數千個文本文件。

我想使用DIH在單個內核中對這些不同的數據源編制索引。 代碼正在工作,但TikaEntityProcessor不工作? 請問代碼中的錯誤在哪裏?

回答

0

您可以configure multiple data sources in a single configuration file並指定數據源的實體描述:

<dataSource type="JdbcDataSource" name="ds-1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db1-host/dbname" user="db_username" password="db_password"/> 
<dataSource type="JdbcDataSource" name="ds-2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://db2-host/dbname" user="db_username" password="db_password"/> 

,然後引用的數據源中的實體:

<entity name="one" dataSource="ds-1" ...> 
    .. 
</entity> 
<entity name="two" dataSource="ds-2" ...> 
    .. 
</entity> 

我的猜測是,這個工程即使對於嵌套實體。

+0

感謝@MatsLindh的答覆,但我數據來源不同。一個是文本文件在一個文件夾中,第二個是mysql數據庫。我可以根據其中一個文本文件字段從mysql數據庫檢索數據。見信息的代碼 –

+0

<實體名= 「文件」 的dataSource = 「空」 rootEntity = 「假」 處理器= 「FileListEntityProcessor」 變壓器= 「RegexTransformer」 BASEDIR =「/家/沙/ ResearchTestData/TestScore3 「fileName =」\。(txt)|(pdf)|(docx)「 recursive =」true「>

+0

<實體 name =「documentImport」 處理器= 「TikaEntityProcessor」 URL = 「$ {files.fileAbsolutePath}」 格式= 「文本」> <字段列= 「文本」 名稱= 「文本」/>

相關問題