Katkısı olan herkese teşekkürler. Çok başarılı bir çalışma olmuş.
NZemberek’i kullanarak Lucene.Net için yazdığım TurkishAnalyzer ile oldukça güzel sonuçlar elde ettim.
Deployment esnasında dosya çöplüğünü(tabiiki sadece NZemberek ile ilgili değil) biraz azaltabilmek için bir önerim olacak.
a) \kaynaklar\tr\bilgi altındaki tüm dosyalar “Embedded Resource” olarak compile edilebilir. Böylece DLL ile birlikte dağıtılması gereken bir directory azaltılabilir.
(Elbette bu dosyalara erişim gereken kodlarda birtakım değişiklikler gerekecek fakat gerekirse bir patch hazırlayabilirim)
b) Reference edilen assembly’ler (Iesi.Collections.dll veya log4net.dll gibi) ve Nzemberek tanımlanacak bir “Post Build Action” ile ve Microsoft’un “ILmerge” ünü kullanarak
tek bir DLL(Nzemberek) altında toplanabilir.
Böylece deployment esnasında sadece Nzemberek.Dll’in kullanılması yeterli olabilecektir(bu durumda Nzemberek’in büyüklüğü ~2.1M oluyor).
DIGY
Embedded resource konusuna gelince,
Mevcut paketin yanında dediğiniz gibi compact bir distro da yapılması
iyi olur hakkaten.
Ancak tamamen bu yöne dönmeden customized dictionary konusu ve
sözlüklerin executabledan bağımsız dağıtılabilmesi ihtimalini de iyi
düşünmek lazım.
Yaklaşık bir yıl önce portingi yapmıştık ve sanırsam marttan bu yana
Zemberekte olan düzeltme ve iyileştirmeleri yansıtmaya vakit
bulamadık.
Bu aralar bi zaman ayırmayı düşünüyoruz ama herhangi birşey için söz veremem.
Geliştirmeye katılmak katkı vermek istersen çok seviniriz.
İstersen hemen seni de developers grubuna ekleyelim.
Tankut
Not : Bu arada sürekli "biz" diye konuşuyorum, biz (Mert ve Tankut)
iki arkadaşız.
Diğer konuya gelirsek(customized dictionary);
Ben alttaki gibi bir class yazarak ve
araclar.turkce\TurkishTokenStream.cs
araclar.turkce\YaziIsleyici.cs
bilgi\KaynakYukleyici.cs
bilgi.araclar\IkiliKokOkuyucu.cs
yapi.ek\XmlEkOkuyucu.cs
gibi kodlarda file açan yerlerde "GetResource" u invoke ederek gerekli
değişikliği sağlayabildim.
Ancak "GetResource" değiştirilerek ve Internal-Resource'tan önce File.Exists
ile dosyanın varlığını kontrol edip
ve varsa file systemdeki dosyayı tercih ederek programın customized dict.
kullanması da sağlanabilir.
Son olarak, diğer DLL'ler zaten çok küçük olduğu için direk olarak
Nzemberek.dll'in içine gömülmesinin bir sıkıntı
yaratacağını zannetmiyorum.
"Siz" in çalışmalarının devamını bekliyorum.
DIGY
Not: Google ve benzerlerinin indeksleyebildiği yazışmalarda(aynı eMail
adresini olur olmadık bir sürü yere de verdiğim için)
gerçek adımı kullanmıyorum. Özürler.
<pre>
using System;
using System.Collections.Generic;
using System.Text;
namespace net.zemberek
{
internal class Digy
{
//new FileStream(FileName, bla bla ...
internal static System.IO.Stream GetResource(string FileName)
{
string resourceName = "net.zemberek." + FileName.Replace("\\",
".").Replace("/", ".");
try
{
System.IO.Stream s =
System.Reflection.Assembly.GetAssembly(typeof(Digy)).GetManifestResourceStre
am(resourceName);
if (s == null)
{
System.Windows.Forms.MessageBox.Show("GetResource:" +
FileName);
}
return s;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show("GetResource:" +
ex.Message + "\n" + FileName);
}
return null;
}
//File.Exists
internal static bool Exists(string FileName)
{
string resourceName = "net.zemberek." + FileName.Replace("\\",
".").Replace("/", ".");
string[]
names=System.Reflection.Assembly.GetAssembly(typeof(Digy)).GetManifestResour
ceNames();
foreach (string name in names)
{
if (name == resourceName)
{
return true;
}
}
return false;
}
}
}
</pre>
Ben aslında şu an Lucene.Net'e güzel bir TurkishAnalyzer'ın eklenmesi ile
ilgiliyim.
Kendim için kullandığım(compact) sürümün, olduğu haliyle public domain'e
sunulmasını
-her zaman benim desteğimim olamayabileceği ve
-kod geliştiricilerinin isim hakkını ihlal etmemek
açısından uygun bulmuyorum.
Ayrıca "external dependency" gereken bir kodun direk olarak Lucene.Net içine
konulması da
(Tüm dünya bunu kullanacak değil :-) )mümkün değil. Bu kodun bir
"contribution" olarak
ve bir utility gibi ayrıca sunulması gerekir.
Ancak şu haliyle zaten iki source(Lucene.Net ve TurkishAnalyzer) ile
uğraşmak zorunda olan
insanlara birde Nzemberek'i indir şunları şunları yap daha sonra şunları
kopyala demek biraz
fazla olabilir.
Ben, bu amaçla "compact" bir sürüm ile ilgileniyorum.
DIGY.
-----Original Message-----
From: nzembe...@googlegroups.com [mailto:nzembe...@googlegroups.com]
On Behalf Of Tankut Tekeli
Sent: Thursday, November 22, 2007 12:04 PM
To: nzembe...@googlegroups.com
Subject: Re: Teşekkürler