public bool TryLoad(string path, IndexLoadOptions options)
{
try
{
_directory = FSDirectory.Open(path);
_reader = IndexReader.Open(_directory, options.ReadOnly);
if (options.ForceUnlock && _directory.FileExists(IndexWriter.WRITE_LOCK_NAME))
{
_directory.ClearLock(IndexWriter.WRITE_LOCK_NAME);
}
var fields = _reader.GetFieldNames(IndexReader.FieldOption.ALL);
_numFields = fields.Count;
CountTerms();
foreach (var file in _directory.ListAll())
{
try
{
string fpath = Path.Combine(_directory.Directory.ToString(), file);
if (_lastModified == null)
_lastModified = File.GetLastWriteTimeUtc(fpath);
else
{
var mod = File.GetLastWriteTimeUtc(fpath);
if (mod > _lastModified.Value)
_lastModified = mod;
}
}
catch
{
// ignore
}
}
_loaded = true;
return true;
}
catch
{
_directory = null;
_reader = null;
_numFields = 0;
_numTerms = 0;
_loaded = false;
_lastModified = null;
return false;
}
}