Kullanıcıların bir Lucene dizinine sorgu gönderdiği bir web uygulamasına sahibim. sorguları bir Lucene QueryParser
tarafından ayrıştırılır. QueryParser
'un iş parçacığı güvenli olmadığını çok zor öğrendim.Birden çok iş parçacığında Lucene QueryParser: her seferinde yeni veya eşitlensin mi?
Tek bir QueryParser
örneğini kullanmak ve çağrıları parse()
yöntemiyle senkronize etmek daha iyi midir? Veya her sorgu için yeni bir örnek oluşturmak daha mı iyi? (Ya ben daha iyi QueryParser
s'lik bir havuz kenarında servis olurdu?) Böyle Genel sorular özel hususlar bağlıdır ve profil gerektiren, ama belki birilerinin QueryParser
s/oldukça ucuz olan "kesin söyleyebiliriz biliyoruz
inşa etmek pahalı?
+1 Evet, kesinlikle QueryParser' nesnesini havuzlamak (veya paylaşmak) için bir neden yok. Daha fazla okuma: [Java teori ve pratiği: Kentsel performans efsaneleri, yeniden ziyaret edildi] (http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html) – WhiteFang34
Teşekkürler! @ WhiteFang34, bu bağlantı, genel olarak tahsis maliyetinin düşük olmasıyla ilgilidir, fakat **, ** inşaatın ucuz olmadığı bazı tip nesneler olduğuna işaret etmeye değerdir. Çünkü çok fazla iş, tahsisin ötesinde yapılır. Lucene dünyasında, çoğu zaman performans nedenleriyle tek bir 'IndexSearcher' paylaşması hatırlatılır. –