Solr: DIH для многоязычного индекса и многозначного поля? - PullRequest
2 голосов
/ 13 ноября 2010

У меня есть таблица 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?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Сначала ваша схема должна разрешить это следующим образом:

<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>
2 голосов
/ 19 января 2011

Извините, у меня нет прямого ответа на ваш вопрос о DIH, хотя было бы интересно узнать.

Я заметил ваш двухбуквенный код языка и предложил 5-буквенный слот.У некоторых языков есть различия диалекта, которые не тривиальны.Например, упрощенный китайский или традиционный китайский.Для морфологического анализа фильтр SmartCN может обрабатывать zh-cn, но не zh-tw и т. Д.

Португальский и испанский также являются языками, в которых нас предупреждают против смешения всех диалектов, хотя различия меньшерадикально, и оба будут доступны для поиска.

Конечно, вы, возможно, уже знали это, и просто не добавили его в вопрос, чтобы сделать его простым.Это просто очень свежая тема для меня.

...