2014-05-19 3 views
4

j'ai un champ dans SolrSolr dynamique types de champ

<dynamicField name="Phrase_*" type="string" indexed="true" stored="true" multiValued="true" required="false"/> 

qui est utilisé pour contenir des phrases dans différentes langues, de sorte que les noms ont tendance à être « Phrase_en », « Phrase_sp », etc. Je analyseurs et des filtres pour travailler avec des champs différents langagés pour des types nommés d'une manière similaire ("string_en", "string_sp", etc) qui font la traduction/traduction correcte pour la langue correspondante, et je voudrais trouver un moyen de la truquer de sorte que l'ensemble analyseur/filtre correct soit utilisé pour chaque langue, en fonction du nom du champ.

À l'heure actuelle, la seule chose que je peux penser est de créer un type qui multiplexe ces ensembles d'analyseurs et fait le jugement sur lequel l'envoyer, mais je ne sais pas comment faire cela.

Avez-vous des idées sur la façon de réussir, ou une meilleure façon d'atteindre cet objectif?

Répondre

4

Ce problème est couvert dans une quantité de détail dans le livre Solr In Action (fortement recommandé pour ceux qui cherchent à plonger profondément dans Solr config) et par d'autres essayant d'atteindre le même résultat. Il y a 3 approches de base:

  1. champ séparé par langue - charge dans des champs séparés (non dynamique) qui ont tokenizers et filtres appropriés par langue
  2. index séparé/noyau par langue -
  3. Tout en un champ, code personnalisé pour gérer -

Votre proposition est une variation sur 1 et 3 - le meilleur endroit que je peux vous donner de commencer est de lire le livre en question (il est dans le chapitre 14) et étudier le code qu'il est pl ACED sur Github pour la mettre en œuvre:

https://github.com/treygrainger/solr-in-action/tree/master/src/main/java/sia/ch14 https://github.com/treygrainger/solr-in-action/tree/master/example-docs/ch14/cores