0

我想使用 SolR DataImport Handler 来索引存储在数据库中的候选者以及链接到这些候选者的文件的内容。

我有一个包含候选列表的数据库表和另一个包含链接到候选的文件路径列表的表。

我需要的是:

  1. 索引候选数据 -非常简单......
  2. 遍历文件列表-我也设法做到了...
  3. 提取文件的内容(pdf、doc、xml、html等...-这部分完成
  4. 将所有文件的内容分组到一个内容字段中以进行索引

这实际上是我卡住的地方!我尝试了各种选项,但系统只索引第一个文件的内容。我尝试使用 javascript 全局变量,虽然这种工作似乎不是最好的解决方案......

此后查找我的 dih.xml 文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
     <script><![CDATA[
      var globalContent = '';

      function processFile(row) {
        var text = row.get('text');
        if (text == null) text = '';
        else globalContent += ' ' + text;

        row.remove('text');
        row.remove('content');

        row.put('content', globalContent);
        return row;
      }
     ]]></script>

     <dataSource type="JdbcDataSource"    name="dbs" driver="com.mysql.jdbc.Driver"         url="jdbc:mysql://localhost:3306/dbname" user="login" password="password" />
     <dataSource type="BinFileDataSource" name="fds" /> 

     <document name="ListOfCandidates">
      <entity name="candidats" datasource="dbs" query="select * from candidates">
       <field column="id_candidat" name="id_candidat" />
       <field column="name"        name="lastname"    />
       <field column="first_name"  name="firstname"   />

       <entity name="ListOfFiles" 
               query="SELECT distinct cd.id_document, cd.filepath 
                  FROM candidat_document cd
                  WHERE cd.id_candidat = '${candidats.id_candidat}'">
        <entity name="file" 
                processor="TikaEntityProcessor" 
                url="/some/folder/${ListOfFiles.filepath}" 
                dataSource="fds" 
                format="text" 
                onError="skip"
                transformer="script:processFile">
          <field column="text" name="text" />
        </entity>                   
       </entity>
      </entity>
     </document>

任何帮助将非常感激!

4

1 回答 1

0

您的row对象包含通过candidats的单个条目累积的所有信息。您是否尝试过在该中填充一个特殊字段来累积文本。

因此,正是您正在做的事情,但将其存储在行中而不是全局变量中。

于 2013-07-14T14:43:33.083 回答