Warm tip: This article is reproduced from serverfault.com, please click

其他-我可以在javascript转换器中访问solr dataimporter.request变量吗

(其他 - Can I access solr dataimporter.request variables in a javascript transformer)

发布于 2014-04-17 09:56:59

我有一个dataconfig.xml文件,该文件从Oracle数据库收集数据。在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;
  }

任何帮助是极大的赞赏!

提前致谢。

Questioner
miluke
Viewed
0
Yann 2014-10-13 17:11:40

我本人只是遇到了这个问题...这个问题很旧,但是以防万一,这就是我如何将上下文变量传递给数据导入处理程序中的脚本:

<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");
        ....
    }

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