2010-09-07 7 views
2

J'utilise SolrNet pour effectuer une intraction avec un index Solr. J'ai une application de démon qui écrit dans l'index Solr avec add/updates/deletes. Cependant, avec SolrNet, un Add avec la même clé unique écrase (remplace) le document existant, au lieu de les ajouter (les combiner).SolrNet/Solr - Mise à jour par rapport au document d'écrasement

Dans Lucene je pourrais faire quelque chose comme ceci où terme est le terme de Lucene pour la clé de document. Comment puis-je faire cela dans SolrNet? Je sais que la (douloureuse) de manière annexant champ par champ dans une méthode, mais sûrement il doit y avoir un moyen plus simple ...

//where term is a Lucene term for the document key 
if (objFacetsSearcher.DocFreq(term) > 0) 
{ 
    objWriter.UpdateDocument(term, doc); 
    updated++; 
} 
else 
{ 
    objWriter.AddDocument(doc); 
    added++; 
} 
+0

duplication possible de [Mettre à jour le champ spécifique sur l'index SOLR] (http://stackoverflow.com/questions/2032813/update-specific-field-on-solr-index) –

+0

@Mauricio - ne pense pas que ce soit lié à ma question. – Mikos

+2

c'est exactement la même chose. Dans Solr, vous ne pouvez pas mettre à jour des champs individuels. –

Répondre

1

Pour autant que je sache, ce n'est pas pris en charge dans Solr encore. Voir SOLR-139.

+0

Essentiellement, le seul moyen est de lire le document en arrière, ajouter des choses et réécrire? Cela semble un d'I/O - préjudiciable à la santé. Quelles approches adoptez-vous pour contourner cela? – Mikos

+0

Je pensais utiliser Lucene pour écrire directement dans l'index Solr. Des inconvénients à connaître? – Mikos

+0

@mikOS en fonction des contraintes environnementales, la manière la plus évidente serait de lire à nouveau le document entier à partir du système source. Si ce n'est pas une option viable, envisagez d'implémenter la fonctionnalité de mise en cache dans votre connecteur (ou dans le cadre de votre traitement de document) ou créez des champs d'entrée stockés dans votre index et lisez le document depuis Solr pour remplir tous les champs en dehors du delta. –

Questions connexes