Lucene Analiz karşılaştırma
Birisi Lucene içinde farklı çözümleyicileri arasındaki farkı açıklayabilecek olan var mı? MaxClauseCount bir istisna alıyorum ve bir KeywordAnalyzer kullanarak bunu önlemek anladığım kadarıyla ama sorunlar analiz çevresindeki anlamadan StandardAnalyzer değiştirmek istemiyorum. Çok teşekkür ederim.
CEVAP
Genel olarak, Lucene herhangi bir çözümleyici stop-kelime tokenizer sözcük kökü ayırıcı filtre.
Tokenizermetin parçalara böler ve farklı analizci, farklı tokenizers kullanabilirsiniz beri, farklı çıkış alabilirsinizsimge akarsuyani dizileri parçaları metinleri. Örneğin, bahsettiğiniz KeywordAnalyzermetin hiç bölme yokve tek bir belirteç olarak sahaya giriyor. Aynı zamanda, StandardAnalyzer (ve diğer birçok analizci), boşluk ve noktalama işareti olarak bölünmüş puan kullanın. İfade için örneğin, "çok mutluyum" liste üretecektir ["i", "am", "", ""] mutlu (ya da onun gibi bir şey). çok Özel analiz cihazları hakkında daha fazla bilgi için/Java Docs bakın tokenizers.
Sözcük köklerinisoru bir sözcük tabanı elde etmek için kullanılır. Bu oldukça ağır bir dil kullanılmış. Örneğin, bir önceki cümle İngilizce olacak bir şey gibi ["", "", "veri", "happi"] üretilen ve Fransızca "Je I'm très heureux" bir tür Fransız çözümleyici (SnowballAnalyzer, başlatılmış olan "Fransız") vasiyet ["je", "être", "tre", "heur"]. Eğer başka bir metin kök bir dil çözümleyici kullanacaksanız tabii ki, başka bir dil kullanılacak ve yanlış sonuçlar doğurabilir kökü kuralları. Tüm sistemin başarısız değil, ama arama sonuçları o zaman daha az doğru olabilir.
Herhangi bir sözcük köklerini kullanmaz KeywordAnalyzer, alan değiştirilmemiş tüm geçirir. Eğer bazı kelimeler İngilizce metin arama yapacaksanız, bu çözümleyici kullanmak iyi bir fikir değil.
Kelimeleri bıraken sık ve neredeyse işe yaramaz sözler. Yine, ağır diline bağlıdır. İngilizce için bu kelimeleri "", "","","","", vb. var olmak bir Stop-kelime filtreleri kaldırmak onlardan token akışı için daha düşük ses arama sonuçları, sonunda bizim ifade "çok mutluyum" ile StandardAnalyzer olacak dönüştürdü liste ["veri", "happi"].
Ve KeywordAnalyzer yine hiçbir şey yapmaz. Yani, KeywordAnalyzer normal metin için KİMLİK ya da telefon numaraları gibi şeyler için, ama kullanılmaz.
Ve maxClauseCount sizin özel durum için, arama alacaksın inanıyorum. Bu durum muhtemelen çok karmaşık bir arama sorgusu yüzünden. Split için birkaç sorgu deneyin veya daha düşük seviyeli fonksiyonları kullanın.
Tam metin arama motoru karşılaştırma -...
mysql datetime karşılaştırma...
Referans: Karşılaştırma PHP's pri...
Neden int-Nesne bir karşılaştırma geçe...
Karşılaştırma DispatcherTimer Timer il...