2010-02-23 20 views
5

Aşağıdaki kod yürütüldüğünde, bir sorguyu her ayrışımda, stopwords dosyasının dosya sisteminden okunduğunu varsayıyorum. Bunu yapmak yerine, yeni bir tane oluşturmak yerine analizörün aynı örneğini tekrar kullanabilir miyim? İplik güvenli mi?Lucene.NET, StandardAnalyzer, kilit kodları ve iş güvenliği

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

cevap

3

StandardAnalyzer sadece statik örneklerini parçacığı için güvenlidir docs durumunu (çok Googling sonra bu konuda herhangi bir bilgi bulamıyorum). QueryParser aynıdır.

+0

Evet, farkettim. Lucene'nin her sorgu için dosya sisteminden dosya sistemini yeniden yükleyip ayrıştırması bana tuhaf geliyor. Performans nedenlerinden dolayı, aynı zamanda 2 thread aynı anda dosyayı okurken dosya sistemi kilitleme sorunları olabileceğini tahmin ediyorum. Iv ayrıca, dokümanda bulunan notun buna ters düştüğü halde analiz cihazını yeniden kullanmanın mümkün olduğunu yorumlayacağım örnekleri de gördü. –

+0

@Alex, yalnızca okunan dosyalar için açılmışsa ve yalnızca kilitli değilse, kilitleme veya diğer erişim sorunları olmayacaktır. – zihotki

+0

Evet, bu doğru, Lucene'nin böyle yaptığını varsayarsak. Bir not, sınıfın iş parçacığı güvenli olmadığını belirttiğinden, varsayımın yanlış olabileceğini varsayabiliriz. –