おっと!
これは「ストレートJava」Luceneですが、他の品種にも当てはまります。 Luceneので
DirectoryReader.indexExists()
のためのAPIを4.0.0は、インデックスが指定されたディレクトリに存在する場合
はtrueを返し述べています。 DirectoryReader.indexExists()
ため
しかし、Luceneの4.10.2でのAPIは、インデックスがそう指定されたディレクトリに存在する場合
はtrueを返し述べています。破損したインデックスが存在する場合、または
をコミット の過程でインデックスが...はい、それは半ば文を途切れる場合は、その 注意。 NB私はJavadocを直接ソースからコンパイルしましたが、同じ未完成のフレーズがオンラインAPIに見られます。それだけでなく、私はLucene 6.0.0 APIを見ました。まったく同じです。
"リターン" というフレーズは、しかしです:
インデックスが存在する場合はtrue。そうでない場合はfalse
...しかし、私は現在、空のディレクトリが時々(?)返すtrue
(私のユニットテストから)を返すと信じています。とにかく、私はそれを信じません。
空のディレクトリにIndexReader
を作成すると、すべてのメソッドが例外をスローせずに返されるように見えます。 indexReader.numDocs()
に行くことができますが、これは0を返しますが、そこにはインデックスが存在しないことを証明するものではなく、Document
が存在しないことだけが証明されます。あなたの要求に応じて、もちろん十分かもしれません。
同様に、IndexReader
からIndexSearcher
を作成し、IndexWriter
を作成することができます。これらのどれも、空のディレクトリに明らかな問題がありません。
よりよい解決策:
try {
directoryReader = DirectoryReader.open(fsDir);
} catch (org.apache.lucene.index.IndexNotFoundException e) {
...
}
これは信頼できると、私の知る限り、表示されます。
Lucene.netにはこのオーバーロードがありません。 – Marek
どのバージョンのLucene.Netに過負荷がありませんか?それは2.4にあります。 –
私は "ストレートJava" Luceneを使用しています。 4.10の 'IndexWriter'にはコンストラクタが1つしかありません。しかし、質問者があなたの解決策から求めていたものを得る方法を理解していません。既にインデックスがあるかどうかを調べてください。 –