Solr: pour l'index multilingue du DIH et champ Multivalued?
-
09-10-2019 - |
Question
J'ai une table MySQL:
CREATE TABLE documents (
id INT NOT NULL AUTO_INCREMENT,
language_code CHAR(2),
tags CHAR(30),
text TEXT,
PRIMARY KEY (id)
);
J'ai 2 questions sur Solr DIH:
1) Le champ langauge_code
indique quelle langue le champ text
est. Et selon la langue, je veux index text
à différents champs 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"
...
Can usecase gérer un DIH comme celui-ci? Comment puis-je configurer pour le faire?
2) Le champ tags
doit être indexé dans un champ de multiValued
Solr. Plusieurs valeurs sont stockées dans une chaîne, séparés par une virgule. Par exemple, si tags
contient la chaîne "blue, green, yellow"
je veux indexer les 3 valeurs "blue"
, "green"
, "yellow"
dans un champ Solr Multivalued.
Comment puis-je faire avec DIH?
Merci.
La solution
Premiers vos besoins de schéma pour permettre avec quelque chose comme ceci:
<dynamicField name="text_*" type="string" indexed="true" stored="true" />
Alors dans votre config quelque chose comme ceci DIH:
<entity name="document" dataSource="ds1" transformer="script:ftextLang" query="SELECT * FROM documents" />
Avec le script étant défini juste en dessous du point d'émission:
<script><![CDATA[
function ftextLang(row){
var name = row.get('language_code');
var value = row.get('text');
row.put('text_'+name, value); return row;
}
]]></script>
Autres conseils
Je suis désolé, je n'ai pas une réponse directe à votre question de DIH, mais il serait intéressant de savoir.
J'ai remarqué votre code de langue à 2 lettres et suggérer une fente de 5 lettres. Certaines langues ont des différences de dialecte qui ne sont pas négligeables. Par exemple, le chinois simplifié par rapport chinois traditionnel. Pour l'analyse morphologique, le filtre SmartCN peut gérer zh-CN, mais pas zh-tw, etc.
portugais et espagnol sont aussi des langues où nous avons été mis en garde contre le mélange tous les dialectes ensemble, bien que les différences sont moins drastiques, et les deux seraient toujours consultables.
Bien sûr, vous avez sans doute déjà connu cela, et n'a tout simplement pas l'ajouter à la question de rester simple. Il est juste un sujet très frais dans mon esprit.