2010-10-15 13 views
17

Quando si elimina file di indice di Solr su disco, (trovato in /solr/data/index e solr/data/spellchecker), solr genera un'eccezione ogni volta che provo a fare una richiesta ad esso:Come recuperare da file indice cancellati Solr?

java.lang.RuntimeException: java.io.FileNotFoundException : no segmenti * file trovato in [email protected]/.../solr/data/index:

l'unico modo che ho trovato per recuperare da questo è quello di “seme” della data directory con i file di indice da altrove. Non importa dove sembra. Una volta fatto, posso eseguire una query per ricaricare lo schema e rigenerare l'indice. È così che dovrebbe funzionare? Sembra che ci dovrebbe essere un modo per dire solr per rigenerare quei file da zero. Forse mi sto solo sbagliando nel presupposto che questi file non facciano parte dell'applicazione stessa (tipo di sottinteso dal nome "dati")?

risposta

48

Solr genererà tale eccezione all'avvio se la directory index esiste ma è vuota. Tuttavia, se si elimina la directory, Solr la creerà e i file dei segmenti vuoti all'avvio.

+1

Questo era il mio problema, solo una nota per gli altri, ho dovuto 1) Stop solr, 2) eliminare la directory, 3) start solr. Quando ho avuto il solr in esecuzione e cancellato la directory e ho cercato di forzare un indice, avrebbe comunque fallito. Grazie per l'aiuto =] –

+0

Questa è sicuramente la soluzione! Buona pesca :] – tfont

0

Se si utilizza sunspot solr su rotaie, sunspot può reindicizzare tutti i dati dal database in solr. Tuttavia, solr standalone non saprebbe dove portare i dati a reindex. Avresti bisogno di un backup dei dati.

0

Il problema può riguardare il file di segmenti se si elimina l'indice. i file vengono cancellati fisicamente ma sono presenti nella ram o nella cache del solr. Evita di eliminare i file direttamente dai file indice solr fisicamente. utilizzare query di eliminazione per eliminare l'indice, facendo questo altererebbe i segmenti dell'indice e non sarà necessario riavviare il solr

riguarda

Rajat

0

eccezione FileNotFoundException segnali che un tentativo di aprire il file denotato da un percorso specificato non è riuscito. Quindi il tuo indice non è valido o corrotto.

NIOFSDirectory classe viene utilizzata per la lettura e la scrittura di file di indice. La directory viene creata nella posizione indicata se non esiste ancora.

Quindi probabilmente si dovrebbe:

  1. Eliminare la directory index o ripristinare i dati dal backup.
  2. Riavvia il server (o almeno ricarica la configurazione).
Problemi correlati