我有一个mysql表:

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

我有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"
...

DIH可以处理这样的用户酶吗?如何将其配置为这样做?

2) tags 需要将字段索引到solr multiValued 场地。多个值存储在字符串中,由逗号隔开。例如,如果 tags 包含字符串 "blue, green, yellow" 那我想索引3个值 "blue", "green", "yellow" 进入SOLR多值字段。

我该如何使用DIH做到这一点?

谢谢。

有帮助吗?

解决方案

首先,您的模式需要以这样的方式允许它:

<dynamicField name="text_*" type="string" indexed="true" stored="true" />

然后在您的dih配置类似的情况下:

<entity name="document" dataSource="ds1" transformer="script:ftextLang" query="SELECT * FROM documents" />

脚本在数据源下方定义:

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

其他提示

对不起,我对您的DIH问题没有直接的答案,尽管很有趣。

我确实注意到您的2个字母语言代码,并建议一个5个字母插槽。某些语言的方言差异是微不足道的。例如,简化中文与传统中文。对于形态学分析,SMARTCN过滤器可以处理ZH-CN,但不能处理ZH-TW,等等。

葡萄牙语和西班牙语也是我们被警告不要将所有方言混合在一起的语言,尽管差异较小,但两者仍然可以搜索。

当然,您可能已经知道了这一点,只是没有将其添加到问题中以使其简单。这只是我心中非常新鲜的主题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top