2010-10-15 13 views
17

Lorsque je supprime les fichiers d'index de Solr sur le disque, (dans /solr/data/index et solr/data/spellchecker), solr déclenche une exception à chaque fois que je tente de faire une demande à elle:Comment récupérer des fichiers d'index supprimés par Solr?

java.lang.RuntimeException: java.io.FileNotFoundException : aucun segment * fichier trouvé dans [email protected]/.../solr/data/index:

la seule façon que j'ai trouvé à se remettre de cela est de « graines » la data répertoire avec les fichiers d'index d'ailleurs. Cela n'a pas vraiment d'importance là où ça semble. Une fois cela fait, je peux lancer une requête pour recharger le schéma et régénérer l'index. Est-ce ainsi que cela est censé fonctionner? Il semble qu'il devrait y avoir un moyen de dire à Solr de régénérer ces fichiers à partir de zéro. Peut-être que je me trompe simplement dans mon hypothèse que ces fichiers ne font pas partie de l'application elle-même (sorte de impliqué par le nom "données")?

Répondre

48

Solr lancera cette exception au démarrage si le répertoire index existe mais est vide. Cependant, si vous supprimez le répertoire, Solr le créera et les fichiers segments vides au démarrage.

+1

Cela a été mon problème, juste une note à d'autres, je devais 1) Stopper solr, 2) supprimer le répertoire, 3) démarrer solr. Lorsque j'ai exécuté et supprimé le répertoire et tenté de forcer un index, il échouait toujours. Merci pour l'aide =] –

+0

C'est définitivement la solution! Bonne prise :] – tfont

0

Si vous utilisez des soluns sur des rails, la tâche solaire peut réindexer toutes les données de la base de données dans Solr. Cependant, Solr autonome ne saurait pas où tirer les données pour réindexer. Vous auriez besoin d'une sauvegarde des données.

0

Le problème peut résider dans le fichier de segments si vous supprimez l'index. les fichiers sont physiquement supprimés mais sont présents dans le RAM ou le cache du solr. Évitez de supprimer des fichiers directement à partir des fichiers d'index solr physiquement. utiliser la requête de suppression pour supprimer l'index, faisant cela modifierait les segments de l'index et vous ne devrez pas redémarrer le solr

ce qui a trait

Rajat

0

Exception FileNotFoundException signaux qu'une tentative pour ouvrir le fichier indiqué par un chemin spécifié a échoué. Donc, soit votre index est invalide ou corrompu. La classe est utilisée pour lire et écrire des fichiers d'index. Le répertoire est créé à l'emplacement indiqué s'il n'existe pas encore.

Alors vous devriez probablement:

  1. Supprimer le répertoire index ou restaurer les données à partir des sauvegardes.
  2. Redémarrez le serveur (ou au moins rechargez la configuration).