Упс!
Это Lucene с "прямой Явой", но вполне может относиться к другим разновидностям.
В Lucene 4.0.0 API для DirectoryReader.indexExists()
говорит
Возвращает true, если в указанном каталоге существует индекс.
Но в Lucene 4.10.2 API для DirectoryReader.indexExists()
говорит
Возвращает true, если индекс существует в указанном каталоге.
Обратите внимание, что если существует поврежденный индекс или если индекс находится в процессе
совершение
... да, оно разрывается в середине предложения. NB. Я скомпилировал свой Javadoc непосредственно из источника, но ту же незаконченную фразу можно увидеть в онлайн-API. Не только это, но я посмотрел на API Lucene 6.0.0, и он точно такой же.
Однако фраза «возврат»:
true, если индекс существует; ложь в противном случае
... но в настоящее время я верю, что пустой каталог иногда (?) Возвращает true
(из моего модульного тестирования). Во всяком случае, я бы не стал доверять этому.
Если вы создадите IndexReader
в пустой директории, то все методы будут возвращены без исключений. Вы можете пойти indexReader.numDocs()
, и это вернет 0, но это не доказывает, что там нет индекса, только что нет Document
с. В зависимости от ваших требований, этого может быть достаточно.
Аналогично, вы можете создать IndexSearcher
из такого IndexReader
, и вы можете создать IndexWriter
. Ни у одного из них не возникнет явной проблемы с пустым каталогом.
ЛУЧШЕЕ РЕШЕНИЕ:
try {
directoryReader = DirectoryReader.open( fsDir );
} catch ( org.apache.lucene.index.IndexNotFoundException e) {
...
}
Насколько я могу судить, это кажется надежным.