Al usar Lucene.Net con ASP.NET, me imagino que una solicitud web puede desencadenar una actualización del índice mientras que otra solicitud web realiza una búsqueda. ¿Lucene.Net ha incorporado la posibilidad de gestionar el acceso simultáneo, o tengo que administrarlo, para evitar errores de "ser utilizado por otro proceso"?¿Lucene.Net administra varios hilos que acceden al mismo índice, un índice mientras que el otro está buscando?
EDITAR: Después de leer los documentos y la experimentación, esto es lo que creo que he aprendido: hay dos problemas, la seguridad del hilo y la concurrencia. El subprocesamiento múltiple es "seguro" en el sentido de que no se puede hacer nada malo con el índice. Pero, es seguro a costa de un solo objeto que tiene un bloqueo en el índice a la vez. El segundo objeto vendrá y lanzará una excepción. Por lo tanto, no puede dejar una búsqueda abierta y esperar que un escritor en otro hilo pueda actualizar el índice. Y si un hilo está ocupado actualizando el índice, entonces tratar de crear un buscador fallará.
Además, los buscadores ven el índice tal como estaba en el momento en que lo abren, por lo que si los mantienen actualizados y actualizan el índice, no verán las actualizaciones.
Quería que mis búsquedas vieran las últimas actualizaciones.
Mi diseño, y parece que está funcionando hasta el momento, es que mis escritores y buscadores comparten un candado, para que no fallen, solo esperan, hasta que se complete la escritura o búsqueda actual.
¿Podría explicar cómo implementó las cerraduras? ¿Utiliza bloqueos de lectura y escritura o solo un bloqueo compartido? –
Un bloqueo compartido. Escribí lo que hice: http://ifdefined.com/blog/post/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx –
Lo que dices en tu pregunta es incorrecto: "Entonces, puedes "Deje una búsqueda abierta y espere que un escritor en otro hilo pueda actualizar el índice. Y si un hilo está ocupado actualizando el índice, entonces tratar de crear un buscador fallará". Como se menciona en las otras respuestas: "Un escritor o lector de índice puede editar los archivos de índice lucene mientras las búsquedas están en curso" y viceversa. –