Search code examples
.netlucenelucene.netvirtualfilesystem

use a virtual file system with Lucene.NET


Is there a way to use a virtual filesystem with Lucene.NET? Based on my (moderate) experience with Lucene, I suspect the answer here is no; but just in case (...) barring that:

Or is there an existing Contrib module or add-on for Lucene.NET that adds VFS support?


Solution

  • You can do this by implementing Lucene.Net.Store.Directory. The xmldoc for this abstract class is very didactic:

    A Directory is a flat list of files. Files may be written once, when they are created. Once a file is created it may only be opened for read, or deleted. Random access is permitted both when reading and writing.

    Java's i/o APIs not used directly, but rather all i/o is through this API. This permits things such as:

    • implementation of RAM-based indices;
    • implementation indices stored in a database, via JDBC;
    • implementation of an index as a single file;

    Directory locking is implemented by an instance of LockFactory, and can be changed for each Directory instance using setLockFactory.

    Here's an example of implementing a custom Directory to support Azure.