2010-02-23 12 views
5

Cuando el código se ejecuta a continuación, supongo que el archivo de palabras vacías se lee del sistema de archivos cada vez que analizo una consulta. En lugar de hacer esto, ¿puedo reutilizar la misma instancia del analizador en lugar de crear uno nuevo? ¿Es seguro para subprocesos? (Después de mucho googlear no puedo encontrar ninguna información sobre este)Lucene.NET, StandardAnalyzer, stopwords y seguridad de hilos

var stopwordsFile = new FileInfo("C:\MyStopWordsFile.txt"); 
var analyzer = new StandardAnalyzer(stopwordsFile); 
var queryParser = new QueryParser("", analyzer); 
var query = queryParser.Parse(stringToParse); 

Respuesta

3

El estado documentos que sólo los casos estáticos de StandardAnalyzer son seguros para subprocesos. QueryParser es lo mismo.

+0

Sí, me di cuenta de eso. Me parece extraño que Lucene vuelva a cargar y analizar el archivo de palabras vacías del sistema de archivos para cada consulta. Debido a razones de rendimiento, pero también creo que puede haber problemas de bloqueo del sistema de archivos también cuando 2 hilos leen el archivo al mismo tiempo. Iv también vio muestras donde interpretaría que es posible reutilizar el analizador, aunque la nota en el documento parece contradecir eso. –

+0

@Alex, no habrá bloqueo u otros problemas de acceso si el archivo se abre solo para lectura y no está bloqueado exclusivamente. – zihotki

+0

Sí, eso es cierto, suponiendo que Lucene lo haga de esa manera. Como una nota dice que la clase no es segura para subprocesos, se puede suponer que esa suposición podría ser incorrecta. –

Cuestiones relacionadas