12 votes

Solr Clé unique composite à partir des champs existants dans le schéma

J'ai un index nommé LocationIndex dans solr avec des champs comme suit:

    // et quelques champs supplémentaires

solr_id

Mais maintenant je veux changer le schéma pour que la clé unique doit être un composite de deux champs déjà présents solr_id et solr_ver... quelque chose comme suit:

    // et quelques champs supplémentaires

solr_ver-solr_id

Après avoir cherché, j'ai découvert que c'est possible en ajoutant ce qui suit au schéma: (réf: Clé unique composite Solr à partir de champs existants dans le schéma)

    docid_s
    userid_s
    id

    id
    --

Alors j'ai modifié le schéma et finalement ça ressemble à ceci :

    solr_ver
    solr_id
    id

    id
    -

    // et quelques champs supplémentaires

id

Mais lors de l'ajout d'un document, cela me donne une erreur:

org.apache.solr.client.solrj.SolrServerException: Le serveur à l'adresse http://localhost:8983/solr/LocationIndex a renvoyé un statut non ok:400, message: Document [null] champ requis manquant: id

Je ne comprends pas quels changements dans le schéma sont nécessaires pour fonctionner comme souhaité?

Dans un document que j'ajoute, il contient les champs solr_ver et solr_id. Comment et où va-t-il (solr) créer le champ id en combinant ces deux champs quelque chose comme solr_ver-solr_id?

EDIT:

À ce lien Il est indiqué comment faire référence à cette chaîne. Mais je ne comprends pas comment cela doit être utilisé dans le schéma? Et où dois-je apporter des modifications?

10voto

Paige Cook Points 13415

Il semble que vous avez défini votre updateRequestProcessorChain de manière appropriée et cela devrait fonctionner. Cependant, vous devez ajouter cela au fichier solrconfig.xml et non au fichier schema.xml. Le lien supplémentaire que vous avez fourni montre comment modifier votre fichier solrconfig.xml et ajouter votre updateRequestProcessorChain défini au gestionnaire de requêtes /update actuel pour votre instance solr.

Voici ce que vous devez faire :

  1. Déplacez votre vers votre fichier solrconfig.xml.
  2. Met à jour l'entrée dans votre fichier solrconfig.xml et modifiez-la pour qu'elle ressemble à ce qui suit :

          composite-id

Cela devrait alors exécuter votre chaîne de mise à jour définie et remplir le champ d'identifiant lorsque de nouveaux documents sont ajoutés à l'index.

4voto

Maksim Points 644

La solution décrite ci-dessus peut présenter certaines limitations, que se passe-t-il si "dest" dépasse la longueur maximale parce que les champs concaténés sont trop longs. Il existe également une autre solution avec MD5Signature (Une classe capable de générer une chaîne de signature à partir de la concaténation d'un groupe de champs de document spécifiés, hachage 128 bits utilisé pour la détection des doublons exacts)

    true
    false
    id
    name,features,cat
    org.apache.solr.update.processor.Lookup3Signature

À partir d'ici : http://lucene.472066.n3.nabble.com/Solr-duplicates-detection-td506230.html

2voto

Dan Points 325

Je voudrais ajouter ceci en tant que commentaire, mais il est impossible d'obtenir les crédits de nos jours... quoi qu'il en soit, voici un meilleur lien : https://wiki.apache.org/solr/Deduplication

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X