Lucene.Net.Store.Azure |
이름 | 설명 |
---|---|
BufferedIndexInput | Base implementation class for buffered IndexInput. |
BufferedIndexOutput | Base implementation class for buffered {@link IndexOutput}. |
ByteArrayDataOutput | DataOutput backed by a byte array. WARNING: this class omits most low-level checks, so be sure to test heavily with assertions enabled. @lucene.experimental |
ChecksumIndexOutput | |
CompoundFileDirectory | Class for accessing a compound stream. this class implements a directory, but is limited to only read operations. Directory methods that would normally modify data throw an exception. All files belonging to a segment have the same name with varying extensions. The extensions correspond to the different file formats used by the Codec. When using the Compound File format these files are collapsed into a single .cfs file (except for the LiveDocsFormat, with a corresponding .cfe file indexing its sub-files. Files:
Description:
Notes:
|
CompoundFileDirectory.FileEntry | Offset/Length for a slice inside of a compound file |
CompoundFileDirectory.IndexInputSlicerAnonymousInnerClassHelper | |
DataInput | Abstract base class for performing read operations of Lucene's low-level data types. {@code DataInput} may only be used from one thread, because it is not thread safe (it keeps internal state like file position). To allow multithreaded use, every {@code DataInput} instance must be cloned before used in another thread. Subclasses must therefore implement #clone(), returning a new {@code DataInput} which operates on the same underlying resource, but positioned independently. |
DataOutput | Abstract base class for performing write operations of Lucene's low-level data types. {@code DataOutput} may only be used from one thread, because it is not thread safe (it keeps internal state like file position). |
FSDirectory | Base class for Directory implementations that store index files in the file system. There are currently three core subclasses:
Future#cancel(boolean) (on Java 1.5) should use SimpleFSDirectory instead. See NIOFSDirectory java doc for details. Future#cancel(boolean) (on Java 1.5) should use SimpleFSDirectory instead. See MMapDirectory java doc for details. Unfortunately, because of system peculiarities, there is no single overall best implementation. Therefore, we've added the Open(System.IO.DirectoryInfo) method, to allow Lucene to choose the best FSDirectory implementation given your environment, and the known limitations of each implementation. For users who have no reason to prefer a specific implementation, it's best to simply use FSDirectory.Open(System.IO.DirectoryInfo) . For all others, you should instantiate the desired implementation directly. The locking implementation is by default NativeFSLockFactory , but can be changed by passing in a custom LockFactory instance. |
FSDirectory.FSIndexOutput | Writes output with RandomAccessFile#write(byte[], int, int) |
FileSwitchDirectory | Expert: A Directory instance that switches files between two other Directory instances. Files with the specified extensions are placed in the primary directory; others are placed in the secondary directory. The provided Set must not change once passed to this class, and must allow multiple threads to call contains at once. @lucene.experimental |
IOContext | IOContext holds additional details on the merge/search context. A IOContext object can never be initialized as null as passed as a parameter to either Lucene.Net.Store.Directory#openInput(String, IOContext) or Lucene.Net.Store.Directory#createOutput(String, IOContext) |
IndexInput | Abstract base class for input from a file in a {@link Directory}. A random-access input stream. Used for all Lucene index input operations. |
Lock | An interprocess mutex lock. Typical use might look like: new Lock.With(directory.makeLock("my.lock")) { public Object doBody() { ... code to execute while locked ... } }.run(); |
Lock.With | Utility class for executing code with exclusive access. |
MMapDirectory | File-based Directory implementation that uses mmap for reading, and {@link FSDirectory.FSIndexOutput} for writing. NOTE: memory mapping uses up a portion of the virtual memory address space in your process equal to the size of the file being mapped. Before using this class, be sure your have plenty of virtual address space, e.g. by using a 64 bit JRE, or a 32 bit JRE with indexes that are guaranteed to fit within the address space. On 32 bit platforms also consult #MMapDirectory(File, LockFactory, int) if you have problems with mmap failing because of fragmented address space. If you get an OutOfMemoryException, it is recommended to reduce the chunk size, until it works. Due to this bug in Sun's JRE, MMapDirectory's IndexInput#close is unable to close the underlying OS file handle. Only when GC finally collects the underlying objects, which could be quite some time later, will the file handle be closed. this will consume additional transient disk usage: on Windows, attempts to delete or overwrite the files will result in an exception; on other platforms, which typically have a "delete on last close" semantics, while such operations will succeed, the bytes are still consuming space on disk. For many applications this limitation is not a problem (e.g. if you have plenty of disk space, and you don't rely on overwriting files on Windows) but it's still an important limitation to be aware of. this class supplies the workaround mentioned in the bug report (see #setUseUnmap), which may fail on non-Sun JVMs. It forcefully unmaps the buffer on close by using an undocumented internal cleanup functionality. #UNMAP_SUPPORTED is NOTE: Accessing this class either directly or indirectly from a thread while it's interrupted can close the underlying channel immediately if at the same time the thread is blocked on IO. The channel will remain closed and subsequent access to MMapDirectory will throw a ClosedChannelException. |
MMapDirectory.AnonymousClassPrivilegedExceptionAction | |
MMapDirectory.IndexInputSlicerAnonymousInnerClassHelper | |
MMapDirectory.MMapIndexInput | |
MMapDirectory.MultiMMapIndexInput | |
MockDirectoryWrapper | this is a Directory Wrapper that adds methods intended to be used only by unit tests. It also adds a number of features useful for testing:
|
MockDirectoryWrapper.BufferedIndexOutputWrapper | |
MockDirectoryWrapper.Failure | Objects that represent fail-able conditions. Objects of a derived class are created and registered with the mock directory. After register, each object will be invoked once for each first write of a file, giving the object a chance to throw anSystem.IO.IOException. |
MockDirectoryWrapper.IndexInputSlicerAnonymousInnerClassHelper | |
MockIndexInputWrapper | Used by MockDirectoryWrapper to create an input stream that keeps track of when it's been closed. |
MockRAMDirectory | |
MockRAMDirectory.Failure | |
MockRAMInputStream | Used by MockRAMDirectory to create an input stream that keeps track of when it's been closed. |
MockRAMOutputStream | Used by MockRAMDirectory to create an output stream that will throw an IOException on fake disk full, track max disk space actually used, and maybe throw random IOExceptions. |
NIOFSDirectory | An FSDirectory implementation that uses java.nio's FileChannel's positional read, which allows multiple threads to read from the same file without synchronizing. this class only uses FileChannel when reading; writing is achieved with FSDirectory.FSIndexOutput. NOTE: NIOFSDirectory is not recommended on Windows because of a bug in how FileChannel.read is implemented in Sun's JRE. Inside of the implementation the position is apparently synchronized. See here for details. NOTE: Accessing this class either directly or indirectly from a thread while it's interrupted can close the underlying file descriptor immediately if at the same time the thread is blocked on IO. The file descriptor will remain closed and subsequent access to NIOFSDirectory will throw a ClosedChannelException. If your application uses either Thread#interrupt() or Future#cancel(boolean) you should use SimpleFSDirectory in favor of NIOFSDirectory. |
NIOFSDirectory.IndexInputSlicerAnonymousInnerClassHelper | |
NIOFSDirectory.NIOFSIndexInput | Reads bytes with FileChannel#read(ByteBuffer, long) |
NativeFSLock | |
NativeFSLockFactory | Implements {@link LockFactory} using native OS file locks. Note that because this LockFactory relies on java.nio.* APIs for locking, any problems with those APIs will cause locking to fail. Specifically, on certain NFS environments the java.nio.* locks will fail (the lock can incorrectly be double acquired) whereas {@link SimpleFSLockFactory} worked perfectly in those same environments. For NFS based access to an index, it's recommended that you try {@link SimpleFSLockFactory} first and work around the one limitation that a lock file could be left when the JVM exits abnormally.
The primary benefit of {@link NativeFSLockFactory} is that lock files will be properly removed (by the OS) if the JVM has an abnormal exit.
Note that, unlike {@link SimpleFSLockFactory}, the existence of leftover lock files in the filesystem on exiting the JVM is fine because the OS will free the locks held against these files even though the files still remain.
If you suspect that this or any other LockFactory is not working properly in your environment, you can easily test it by using {@link VerifyingLockFactory}, {@link LockVerifyServer} and {@link LockStressTest}. |
RAMDirectory | A memory-resident Directory implementation. Locking implementation is by default the SingleInstanceLockFactory but can be changed with #setLockFactory. Warning: this class is not intended to work with huge indexes. Everything beyond several hundred megabytes will waste resources (GC cycles), because it uses an internal buffer size of 1024 bytes, producing millions of {@code byte[1024]} arrays. this class is optimized for small memory-resident indexes. It also has bad concurrency on multithreaded environments. It is recommended to materialize large indexes on disk and use MMapDirectory, which is a high-performance directory implementation working directly on the file system cache of the operating system, so copying data to Java heap space is not useful. |
RateLimiter | Abstract base class to rate limit IO. Typically implementations are shared across multiple IndexInputs or IndexOutputs (for example those involved all merging). Those IndexInputs and IndexOutputs would call #pause whenever they want to read bytes or write bytes. |
RateLimiter.SimpleRateLimiter | Simple class to rate limit IO. |
SimpleFSDirectory | A straightforward implementation of {@link FSDirectory} using java.io.RandomAccessFile. However, this class has poor concurrent performance (multiple threads will bottleneck) as it synchronizes when multiple threads read from the same file. It's usually better to use {@link NIOFSDirectory} or {@link MMapDirectory} instead. |
SimpleFSDirectory.IndexInputSlicerAnonymousInnerClassHelper | |
SimpleFSDirectory.SimpleFSIndexInput | |
SlowClosingMockIndexInputWrapper | hangs onto files a little bit longer (50ms in close). MockDirectoryWrapper acts like windows: you can't delete files open elsewhere. so the idea is to make race conditions for tiny files (like segments) easier to reproduce. |
SlowOpeningMockIndexInputWrapper | Takes a while to open files: gives testThreadInterruptDeadlock a chance to find file leaks if opening an input throws exception |
TestBufferedIndexInput | |
TestBufferedIndexInput.MockFSDirectory | |
TestBufferedIndexInput.MyBufferedIndexInput | |
TestDirectory | |
TestDirectory.TheThread | |
TestDirectory.TheThread2 | |
TestFileSwitchDirectory | |
TestHelper | this class provides access to package-level features defined in the store package. It is used for testing only. |
TestHugeRamFile | |
TestHugeRamFile.DenseRAMFile | Fake a huge ram file by using the same byte buffer for all buffers under maxint. |
TestLock | |
TestLock.LockMock | |
TestLockFactory | |
TestLockFactory.MockLockFactory | |
TestLockFactory.MockLockFactory.MockLock | |
TestLockFactory.SearcherThread | |
TestLockFactory.WriterThread | |
TestMockDirectoryWrapper | |
TestMultiMMap | |
TestNRTCachingDirectory | |
TestRAMDirectory | |
TestRAMDirectory.AnonymousClassThread | |
TestRAMDirectory.ThreadAnonymousInnerClassHelper | |
TestWindowsMMap | |
TrackingDirectoryWrapper | A delegating Directory that records which files were written to and deleted. |