Si vous voulez plusieurs threads d'écrire à un seul IndexWriter alors je voudrais juste frayer un fil qui fait quelque chose comme
Parallel.ForEach(docs, d => { writer.Add(d,analyzer) });
Alors que les accords .NET avec partage les données.
Avec des tailles d'index de grande taille, certaines personnes trouvent des améliorations de performances en ayant plusieurs index dans lesquels ils écrivent, puis fusionnent tous les index ensemble. Ma compréhension est que cela n'est vraiment utile que pour les index vraiment massifs, mais si vous voulez faire cela, alors vous aurez probablement besoin de faire le découpage des données vous-même. Dans ce cas, l'utilisation d'une bibliothèque plus complète comme tpl peut être utile. Solr est intrinsèquement multithread, donc vous feriez exactement le même extrait que je vous ai donné auparavant, sauf qu'au lieu d'appeler directement l'auteur, vous appelleriez votre méthode REST/SolrNet.
En règle générale, si vous demandez "Devrais-je utiliser Solr ou le faire moi-même?" la réponse est presque toujours "utiliser Solr". Je ne peux pas penser à aucune raison que vous voudriez le faire vous-même ici, à moins que votre jvm soit vraiment mauvais ou que vous détestiez vraiment Java.