Vous pouvez modéliser ceci de différentes manières, en fonction de vos besoins de recherche/facettage. Habituellement, vous utiliserez des champs à plusieurs valeurs ou dynamiques. Dans les prochains exemples que je vais omettez le type de champ, drapeaux indexés et stockés:
<field name="first"/>
<field name="last"/>
<field name="child_first" multiValued="true"/>
<field name="child_last" multiValued="true"/>
Il est à vous pour établir une corrélation entre les enfants des prénoms et noms de famille. Ou vous pouvez simplement mettre les deux dans un seul champ:
<field name="first"/>
<field name="last"/>
<field name="child_first_and_last" multiValued="true"/>
Un autre:
<field name="first"/>
<field name="last"/>
<dynamicField name="child_first_*"/>
<dynamicField name="child_last_*"/>
Vous stockeriez champs 'child_first_1', 'child_last_1', 'child_first_2', 'child_last_2', etc. Encore une fois c'est à vous de corréler les valeurs, mais au moins vous avez un index. Avec du code, vous pouvez rendre cela transparent.
Ligne de fond: comme l'indique le message Solr wiki: "Solr fournit une table.Le stockage d'une table de base de données dans un index nécessite généralement la dénormalisation de certaines tables, car les tentatives de dénormalisation échouent généralement." C'est à vous de dénormaliser vos données en fonction de vos besoins de recherche.
MISE À JOUR: Depuis la version 4.5 ou si Solr prend en charge les documents imbriqués directement: https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BlockJoinQueryParsers
Merci Mauricio. Les options # 1 et # 2 ne sont pas vraiment utiles car il devient alors impossible d'extraire des champs individuels, surtout s'il y en a plus de deux. Votre troisième suggestion peut simplement fonctionner, en utilisant des champs dynamiques. Quel mécanisme utiliser dans DataImportHandler pour générer ces champs dynamiques? – cambo
@ user332523: il peut être impossible si vous êtes limité à utiliser DataImportHandler ... mais c'est très facile à faire si vous importez dans votre propre processus codé. –
Salut Mauricio, merci pour la réponse. Voulez-vous dire simplement un importateur de données personnalisé qui utilise l'API Solr pour ajouter les documents à l'index? J'ai lu quelque chose dans les documents Solr DIH qui pourraient être en mesure de créer des champs dynamiques [http://wiki.apache.org/solr/DataImportHandler#TemplateTransformer] – cambo