IndexSearcher ожидает особую структуру каталогов, которую он не может найти, потому что ни один сегмент не был записан (когда вы добавляете документы в IndexWriter, они помещаются в очередь в памяти, а также когда объем используемой памяти достигает заданного порога или когда происходит фиксация() вызывается, эти структуры данных в памяти сбрасываются на диск, что приводит к тому, что Lucene называет сегментом.)
Вам нужно явно создать сегмент, вызвав commit до открытия IndexSearcher.
index = RAMDirectory.new
writer = IndexWriter.new(index, StandardAnalyzer.new(Version::LUCENE_30),IndexWriter::MaxFieldLength::UNLIMITED)
writer.commit()
IndexSearcher.new(index)
Более того, этот конструктор IndexWriter устарел в Lucene 3.4, вам лучше использовать IndexWriterConfig для настройки IndexWriter:
iwConfig = IndexWriterConfig.new(Version::LUCENE_34, StandardAnalyzer.new(Version::LUCENE_34))
writer = IndexWriter.new(index, iwConfig)