Solr: DIH para el índice multilingüe y campo de múltiples valores?
-
09-10-2019 - |
Pregunta
Tengo una tabla de MySQL:
CREATE TABLE documents (
id INT NOT NULL AUTO_INCREMENT,
language_code CHAR(2),
tags CHAR(30),
text TEXT,
PRIMARY KEY (id)
);
Tengo 2 preguntas sobre Solr DIH:
1) El campo langauge_code
indica qué idioma es el campo text
. Y en función del idioma, quiero índice text
a diferentes campos de 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 DIH manejar un caso de uso como esto? ¿Cómo se configura para hacerlo?
2) El campo tags
necesita ser indexada en un campo multiValued
Solr. Varios valores se almacenan en una cadena, separados por una coma. Por ejemplo, si tags
contiene la cadena "blue, green, yellow"
entonces quiero índice de los 3 valores "blue"
, "green"
, "yellow"
en un campo Solr con varios valores.
¿Cómo puedo hacer eso con DIH?
Gracias.
Solución
En primer lugar sus necesidades de esquema para permitir que algo como esto:
<dynamicField name="text_*" type="string" indexed="true" stored="true" />
A continuación, en su configuración DIH algo como esto:
<entity name="document" dataSource="ds1" transformer="script:ftextLang" query="SELECT * FROM documents" />
Con el guión se define justo por debajo de la fuente de datos:
<script><![CDATA[
function ftextLang(row){
var name = row.get('language_code');
var value = row.get('text');
row.put('text_'+name, value); return row;
}
]]></script>
Otros consejos
Lo siento no tengo una respuesta directa acerca de su pregunta DIH, a pesar de que sería interesante conocer.
Me di cuenta el código de idioma de 2 letras y sugerir una ranura de 5 letras. Algunas lenguas tienen diferencias dialectales que no son triviales. Por ejemplo, chino simplificado vs chino tradicional. Para el análisis morfológico, el filtro SmartCN puede manejar zh-cn, pero no zh-tw, etc.
portugués y español son también los idiomas en los que hemos sido advertidos de la mezcla de todos los dialectos juntos, aunque las diferencias son menos drásticas, y ambos todavía serían de búsqueda.
Por supuesto que puede haber ya conocido esto, y simplemente no añadirlo a la cuestión de mantener la sencillez. Es sólo un tema muy fresco en mi mente.