IndexSearcher espera una estructura de directorio especial, que no puede encontrar porque no se han escrito segmentos (cuando agrega documentos a IndexWriter, se ponen en cola en la memoria y cuando la cantidad de memoria utilizada alcanza un umbral determinado o Se llama a commit(), estas estructuras de datos en memoria se vacían en el disco dando como resultado lo que Lucene llama un segmento).
Lo que necesita hacer es crear explícitamente un segmento invocando commit antes de abrir su IndexSearcher.
index = RAMDirectory.new
writer = IndexWriter.new(index, StandardAnalyzer.new(Version::LUCENE_30),IndexWriter::MaxFieldLength::UNLIMITED)
writer.commit()
IndexSearcher.new(index)
Además este constructor IndexWriter está en desuso en Lucene 3.4, se debe más bien utilizar IndexWriterConfig para configurar que IndexWriter:
iwConfig = IndexWriterConfig.new(Version::LUCENE_34, StandardAnalyzer.new(Version::LUCENE_34))
writer = IndexWriter.new(index, iwConfig)
¿Qué versión de Lucene estás usando? No puedo reproducir su problema usando Lucene 3.0.3 (la última versión 3.0). – jpountz
3.4.0 según pacman – Reactormonk