Search thread safety

Multiple simultaneous searches

Search in an index is a thread safe operation. This means that calls to the Search and SearchNext methods can be made from different threads to the same instance of the Index class without any cross-threading problems.

Search during index-modifying operations

Since version 26.10, searches and index-modifying operations do not block each other. A search can be performed from any thread even while documents are being indexed, updated or deleted, or while the index is being merged or optimized. Each search works with a consistent snapshot of the index taken when the search starts: the changes made by an operation that is performed at the same time do not affect the search that has already started. For the specifics of search by chunks, see the Search by chunks page.

Index-modifying operations

Index-modifying operations cannot be performed at the same time. The following operations are mutually exclusive:

  • indexing documents (Add);
  • updating the index (Update);
  • deleting documents from the index (Delete);
  • merging indexes (Merge);
  • optimizing the index (Optimize);
  • changing document attributes (ChangeAttributes);
  • checking index segments (CheckSegments);
  • saving the index to another folder (SaveTo);
  • renaming an indexed document (Notify with a rename notification).

The current state of the index is available in the IndexInfo.IndexStatus property. If one of these operations is started before the previous one has finished, for example from another thread or while an asynchronous indexing operation is in progress, the new call does not throw an exception and does nothing: the ErrorOccurred event of the index is raised with the message “A new operation can not start until the previous one has finished” (for a merge or an optimization, the message is “Merged indexes must not be in progress state.”). The Notify method returns false in this case.

Details on performing these operations can be found in the Indexing section and on the Update index, Delete indexed documents, Merge indexes, Optimize index, Document attributes, Document renaming and Search index location pages.

More resources

GitHub examples

You may easily run the code from documentation articles and see the features in action in our GitHub examples:

Free online document search App

Along with full featured .NET library we provide simple, but powerful free Apps.

You are welcome to search over your PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX and more with our free online Free Online Document Search App.

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.