Solr: DIH für mehrsprachigen Index & mehrwertig Feld?
-
09-10-2019 - |
Frage
Ich habe eine MySQL-Tabelle:
CREATE TABLE documents (
id INT NOT NULL AUTO_INCREMENT,
language_code CHAR(2),
tags CHAR(30),
text TEXT,
PRIMARY KEY (id)
);
Ich habe 2 Fragen zu Solr DIH:
1) Die langauge_code
Feld gibt an, welche Sprache das text
Feld ist in. Und abhängig von der Sprache, ich möchte Index text
auf verschiedene Solr Felder aus.
# 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"
...
Can DIH behandeln einen usecase so? Wie konfiguriere ich es, dies zu tun?
2) Das tags
Feld muss in ein Solr multiValued
Feld indiziert werden. Mehrere Werte werden in einem String gespeichert ist, durch ein Komma getrennt. Zum Beispiel, wenn tags
die Zeichenfolge "blue, green, yellow"
enthält dann möchte ich Index der 3 Werte "blue"
, "green"
, "yellow"
in ein Solr mehrwertig Feld.
Wie kann ich das mit DIH?
Danke.
Lösung
Zuerst Ihr Schema Bedürfnisse zu ermöglichen, es mit etwas wie folgt aus:
<dynamicField name="text_*" type="string" indexed="true" stored="true" />
Dann in Ihrem DIH Config so etwas wie folgt aus:
<entity name="document" dataSource="ds1" transformer="script:ftextLang" query="SELECT * FROM documents" />
Mit dem Skript knapp unterhalb der Datenquelle definiert ist:
<script><![CDATA[
function ftextLang(row){
var name = row.get('language_code');
var value = row.get('text');
row.put('text_'+name, value); return row;
}
]]></script>
Andere Tipps
Es tut mir leid ich nicht eine direkte Antwort über Ihre DIH Frage haben, obwohl es wäre interessant zu wissen.
habe ich Ihren 2 Buchstaben bestehenden Sprachcode feststellen und einen 5 Briefschlitz vorschlagen. Einige Sprachen haben Dialekt Unterschiede, die nicht trivial sind. Zum Beispiel, vereinfachtes Chinesisch vs. traditionelles Chinesisch. Für morphologische Analyse können die SmartCN Filter umgehen zh-cn, aber nicht zh-tw, etc.
Portugiesisch und Spanisch sind auch Sprachen, in denen wir alle Dialekten gegen Mischen gewarnt haben, obwohl die Unterschiede weniger drastisch sind, und beide würden noch durchsucht werden.
Natürlich kann man das schon gekannt haben, und einfach nicht fügen Sie es auf die Frage, es einfach zu halten. Es ist nur ein Thema sehr frisch im Kopf.