lucene solr ve update durumları

timuyla konuşuyorduk.

solr -> orm model olayını bi çözsem
aslında benim çoook sikik bi derdim var
ipne solr
diyelim bi schema hazırladım solr’da
schemada 10 field var
sonra dedimki bu alete al 5 dene field buda uniqId istediğin update et
ediyo
sonra bişi oluyo ben bi 3 dene daha field veriyon önceki verdiklerimden farklı olarak
onu update etmek yerine insert ediyo daha önce gidiğim 5 field kayboluyo ortadan
sinir oldum ben bu işe
her şeyi db’den alıyom
öyle koyuyom tekrardan

Özkan: kolon ekleme konusunu bilmiom
yani document oluşturur sokarsın bitti de id leri farklı olursa
update etmez
değilse update eder
ki lucene de update delete+insert dür
eski veri gider

Sent at 6:48 PM on Sunday
selamtux: he işte o olay sinirimi bozuyo
eski datayıda almam gerekiyo update işlemi için

hibernate search timestamp problemi

hibernate java için seneler önce yazılmış orda burda genelde enterprise level eşşek boyu işlerde kullanılan bir ORM dir. up uzun bir hikayedir kendisi yazının amacı bir alt projesi olan “hibernate search”.

hibernate search bu hibernate i yazanlar tarafından yumurtlanmıştır. ulan biz bi dünya database işi yapıoz bu database de illa bir arama yapılacak.

select bisey from tablo1 where aranacak_kolon like ‘%aranan%’

şeklinde sql ler koşturmakda hiç bir database in hoşuna gitmez ve yavaş çalışır o zaman ne yapmalı biz bunun altına lucene dayayalım denmiş ve hibernate search çıkmış.

gelelim timestamp sorununa. java.sql.Timestamp normalde hibernate in date kolonları için kullanılan klasik bir değişkendir içine zaman verisi atılır. fekat hibernate search ilen indexleyem dendiğinde sıçmaya sebep olur alınan hata :

Unable to guess FieldBridge for created

created orda timestamp seçili kolon veya değişkendir. evvelden bu hatayı aldığımda class da tanımlı değişkeni java.util.Date ile değiştirdim problem çözüldü. bu sefer çok derin bi yerde rastladım. Entity class ımda. ki bu class bütün pojolarımın baba class’ı olduğundan getCrated() fonksiyonunun dönüşüne Date dediğimde kodun her yanı ayrı patladı 😀 başladım kurcalanmaya bi çözüm buldum. custom FieldBridge yazmak. ama kim uğraşcak ulen dedim okumaya devam ettim sonunda çözüm hibernate search’ün @field ile verilen annotationlarında bulundu.

@Field(index=Index.UN_TOKENIZED)
@DateBridge(resolution=Resolution.MILLISECOND)
public Timestamp getCreated(){
return super.getCreated();
}

kodu bu şekilde düzeltince ne dert kaldı nede tasa mis gibi çalışıyor.

Lucene.net ve asp.net

lucene apache nin altında arama işlerinde kullanılan epey oturmuş bir proje. fakat java ile yazılmış bende bugün asp.net ile nasıl olurda kullanabilirim diye bakındım. ve basit bir asp.net örneği bulamadım. neyse diğer örneklerden kendime bişekil çalışan bişey çıkardım bu sefer godaddy shared hosting security exceptionları vermeye başladı ulan dedim noluyor. meğer lucene.net in te aşşalarında çağrılan iki satır kod ortamı karıştırırmış allah google amcamdan razı olsun birisi evvelden çözmüş o problemide ortadan kaldırdım.

sonra dedimki madem ben bulamadım başkasıda bulamayabilir bunu bi article edelim biyerlere koyalım. çok teferruatlı olmadı sonuçda teferruat olucak bişeyde yok en basit bi şekilde index nasıl create edilir nasıl arama yapılır ve sonuçlar gösterilir diye merak edenleriniz varsa bir aspx dosyasında işi bitirdim mis oldu.

Download luceneExample.zip – 196.7 KB