2013-10-07 3 views
0

J'utilise Solr 4.3. J'ai créé 4 partitions. J'ai configuré UniqueKey champ autogenerated comme décrit ici:Solr Cluster + DataImportHandler: puis-je avoir un identifiant généré automatiquement?

http://wiki.apache.org/solr/UniqueKey

Il fonctionne très bien si j'utilise le gestionnaire de mise à jour réelle pour insérer des documents (à savoir si je fais un HTTP POST/mise à jour avec des données JSON, la clé unique est généré automatiquement pour chaque document). Si toutefois j'utilise DataImportHandler pour extraire des documents de la base de données, ils ne sont pas ajoutés à l'index, mais je vois un avertissement dans le journal Solr disant que "le champ obligatoire de l'id est manquant".

Je sais que le DataImportHandler ne passe pas par le UpdateHandler d'ajouter des documents, mais j'espérais cette fonctionnalité fonctionnerait pour ainsi ... DIH

Ma question est la suivante: Quelqu'un sait comment faire fonctionner l'autogénération id pour un cluster Solr 4.3 lors de l'utilisation de DataImportHandler pour insérer des documents?

Répondre

2

Eh bien, la solution que je fini par utiliser est ce

  • créé un transformateur personnalisé en Java (en fait j'utilisais déjà un - je trouve qu'il est plus rapide que de les faire en JS - l'autre option Solr offre)
  • A l'intérieur du transformateur à peu près, je fais ce que le UUIDUpdateProcessorFactory ne: ajouter

    @Override 
    public Object transformRow(Map<String, Object> row, Context context) { 
        row.put("id", UUID.randomUUID()); 
    
  • Je retire ensuite la balise <updateRequestProcessorChain name="uuid"> de mon solrconfig.xml, et seulement quitté la configuration schema.xml selon le lien dans la question

Questions connexes