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.
Açıkçası bu hata isabet kez, endeks güncellenen değildir ve aramalar yeni girilen veriler üzerinde çalışmaz.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)
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?
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. –
Kod güncellendi. – user304217
Bir kod parçası eklendi. Ayrıca varsayılan yerel dosya dizinlerini kullanmamaya, ancak önbelleği JDBCDirectory ile veritabanında saklıyorum. – user304217