Solr:DIH用于多语言索引和多值字段?

Con*_*ion 2 multilingual solr dataimporthandler

我有一个MySQL表:

CREATE TABLE documents (
    id INT NOT NULL AUTO_INCREMENT,
    language_code CHAR(2),
    tags CHAR(30),
    text TEXT,
    PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)

我有2个关于Solr DIH的问题:

1)该langauge_code字段表示该字段所使用的语言text.根据语言,我想索引text不同的Solr字段.

# pseudo code

if langauge_code == "en":
    index "text" to Solr field "text_en"
elif langauge_code == "fr":
    index "text" to Solr field "text_fr"
elif langauge_code == "zh":
    index "text" to Solr field "text_zh"
...
Run Code Online (Sandbox Code Playgroud)

DIH可以处理这样的用例吗?如何配置它?

2)该tags字段需要索引到Solr multiValued字段.多个值存储在字符串中,以逗号分隔.例如,如果tags包含字符串"blue, green, yellow",然后我要编制索引的3个值"blue","green","yellow"为Solr的多值字段.

我如何用DIH做到这一点?

谢谢.

Chr*_*ris 5

首先,您的架构需要允许它具有以下内容:

<dynamicField name="text_*" type="string" indexed="true" stored="true" />
Run Code Online (Sandbox Code Playgroud)

然后在你的DIH配置中这样的东西:

<entity name="document" dataSource="ds1" transformer="script:ftextLang" query="SELECT * FROM documents" />
Run Code Online (Sandbox Code Playgroud)

在数据源下方定义脚本:

<script><![CDATA[
  function ftextLang(row){
     var name = row.get('language_code');
     var value = row.get('text');
     row.put('text_'+name, value); return row;
  }
]]></script>
Run Code Online (Sandbox Code Playgroud)