2010-10-29 18 views
6

Uygulamam Compass altını kullanarak Grails aranabilir eklentisini kullanıyor.Tanrılar aranabilir eklenti

Dizine alınmaya başlayan tablolar yaklaşık olarak 36   MB'dir ve yaklaşık 350   MB dizinleri oluşturuyor. Bu çoğu halk kitaplarında küçüktür.

Dizinleri silip Grails uygulamasını başlatırsak, dizin dosyaları beklendiği gibi yeniden oluşturulur, ancak yaklaşık bir gün çalıştıktan sonra bu hatayı buluruz. İndeksin güncellendiğinden emin olmak için TellMeEntity örneğinde kaydedilen "reindex" ifadesini çağırıyoruz.

durum org.compass.core.engine.SearchEngineException: ad silme başarısız [TellMeEntity] ve kimlikleri [[depolanmış/sıkıştırılmamış, endeksli omitNorms, omitTf]]; iç içe istisna java.io.FileNotFoundException:/var/www/web17/log/mne/index/tellmeentity/segments_2 (böyle bir dosya veya dizin yok) org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction (doDelete) : 348)

Açıkçası bu hata isabet kez, endeks güncellenen değildir ve aramalar yeni girilen veriler üzerinde çalışmaz.

Disk alanı vb. Gibi basit şeyleri kontrol ettik. 'Segmentler_2' mevcut değil, ancak Compass'ın kendisi tarafından oluşturulmasını beklerdim.

....

mirrorChanges = true 
    bulkIndexOnStartup = "fork" 

.... Benim kod

:

....

def formInstance = new TellMeEntity(name:'form',dataOwner:session.community,createBy:session.zoner,tellMeSite:form).save() 
formInstance.reindex() 
grails-app/conf/Searchable.groovy dosyasında

....

Şu anki deneyimim, bu kodun yaklaşık 24 saat boyunca iyi çalıştığı, ancak daha sonra sorun vermeye başladığı. Günde 3000 civarında yeni giriş üretiyoruz, bu da yüksek bir ses gibi gelmiyor, bu yüzden sesin ilgili olduğunu düşünmüyorum.

Bu problem nasıl düzeltilebilir?

+0

Kodunuzda nerede reindexing var? Oluşturduğum ve sorunlarınıza neden olan bir yerde bir .lock dosyası olduğundan şüpheleniyorum. Daha fazla kod yardımcı olacaktır. –

+0

Kod güncellendi. – user304217

+1

Bir kod parçası eklendi. Ayrıca varsayılan yerel dosya dizinlerini kullanmamaya, ancak önbelleği JDBCDirectory ile veritabanında saklıyorum. – user304217

cevap

0

Kalpten çekim: Dizin konumunuz var mı/var/www/web17/log/mne hataya göre dizin dosyalarını döndürmeye çalışan bazı log dosyası döndürme işlemine tabi? 24 saat cron tabanlı bir işin burada karışmasına benziyor.

İlgili konular