【问题标题】:Can I access solr dataimporter.request variables in a javascript transformer我可以在 javascript 转换器中访问 solr dataimporter.request 变量吗
【发布时间】:2014-04-17 09:56:59
【问题描述】:

我有一个从 Oracle 数据库收集数据的 dataconfig.xml 文件。在 Datasource 元素中,我使用 ${dataimporter.request.dbname} 等变量成功返回了我通过 dataimport url 传递的自定义值。

我现在正在同一个 dataconfig 文件中编写一个 javascript 转换器,以在一个可变值字段中添加值,其中包括数据库名称。是否可以从 javascript 转换器中引用变量 ${dataimporter.request.dbname} ?如果是这样,正确的语法是什么?

这是我尝试过的,但没有填充 dbname:

function relatedItems(row) {
    var relatedItemsArray = new java.util.ArrayList();
    var dbname=${dataimporter.request.db_name};
    relatedItemsArray.add('type=DOCUMENT;datasource:PB||' + dbname);
    row.put('relation', relatedItemsArray);
    return row;
  }

非常感谢任何帮助!

提前致谢。

【问题讨论】:

    标签: javascript solr dataimporthandler transformer dih


    【解决方案1】:

    我自己也遇到过这个问题......这个问题很老,但以防万一,这就是我将上下文变量传递给数据导入处理程序中的脚本的方式:

    <entity name="fileline" processor="LineEntityProcessor" url="${filelist.fileAbsolutePath}" format="text" transformer="TemplateTransformer,script:relatedItems">
    <field column="dbname" template="${dataimporter.request.db_name}"/>
    </entity>
    

    TemplateTransformer 将在新字段中添加参数,然后将扩充的行传递给脚本。然后在脚本中:

        function relatedItems(row) {
            var dbname= row.get("dbname");
            var rawLine = row.get("rawLine");
            ....
        }
    

    您可以通过这种方式访问​​您的额外变量。这似乎有些令人费解,但这是我能找到的最好的(可行!)。

    【讨论】:

      【解决方案2】:

      您可以从请求上下文中的 dataimport 调用访问请求参数,该请求对脚本可用,与“行”相同。

      function myScript(row, context) {
        var dbName = context.getRequestParameters().get('db_name');
        ...
      }
      

      【讨论】:

        猜你喜欢
        • 2011-03-20
        • 1970-01-01
        • 2014-03-06
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多