2013-03-15 14 views
6

Używamy Grails 2.1.1 i Searchable plugin 0.6.4 w naszych aplikacjach Grails i zaimplementowaliśmy do wyszukiwania w niektórych domenach wskazanych poniżej wraz z wszystkimi mapowaniami.Grails hibernate/Searchable zatrzymuje serwer, zaczynając od wyjątku poniżej

class User { 
     ..... 
     static hasMany = [userEducations : UserEducations , userWorkings : UserWorkings ] 
     ...... 
     static searchable = { 
     content: spellCheck 'include' 
     all termVector: "yes" 
     userEducations component: true 
     userWorkings component: true 
     } 
     ...... 
} 

class UserEducations { 
    ..... 
    Schools schools 
    ..... 
    static belongsTo = [user : User ] 
    ...... 
    static searchable = { 
     content: spellCheck 'include' 
     all termVector: "yes" 
     schools component: true 
    } 
     ...... 
} 

class UserWorkings { 
     ..... 
     Organizations organizations 
     ..... 
    static belongsTo = [user : User ] 
    .... 
    static searchable = { 
     content: spellCheck 'include' 
     all termVector: "yes" 
     organizations component: true 
    } 
    ...... 
} 

class Schools { 
     ...... 
     static searchable = true 
     ...... 
} 

class Organizations { 
     ...... 
     static searchable = true 
     ...... 
} 

Dane są zapisywane pomyślnie dzięki poprawnemu odwzorowaniu i wiązaniom.

Problem zaczyna się, gdy mamy poniżej drowslike w Użytkownik tabeli z relacji

a1 użytkownika -> UserEducations b1 -> Szkoły d1

i

A2 użytkownika -> UserEducations b2 -> Nauka d1

lub

użytkownika a1 -> UserWorkings c1 -> Organizacje e1

i

A2 użytkownika -> UserWorkings c2 -> Organizacje e1

(Nie jesteśmy pewni powyżej rzeczywistości może być problem się ze względu na dużą nr. danych).

wtedy, gdy staramy się uruchomić serwer wtedy otrzymujemy poniżej wyjątku i serwer nie rozpocznie

Próbowaliśmy usuwając indeks przeszukiwania i ponownym uruchomieniu znowu to nie jest również zacząć.

Serwer jest uruchamiany tylko wtedy, gdy skrócimy tabele odpowiadające powyższym 5 domenom.

18:30:54,133 [Compass Gps Index [pool-5-thread-5]] ERROR indexer.ScrollableHibernateIndexEntitiesIndexer - {hibernate}: Failed to index the database 
org.compass.core.engine.SearchEngineException: Processor [4]: Failed to add job [Job Create [alias [Organizations] uid [Organizations#456#]] Resource [{Organizations} [stored/uncompressed,indexed,omitNorms<alias:Organizations>],[stored/uncompressed,indexed,omitNorms,omitTf<$/Organizations/id:456>],[stored/uncompressed,indexed<active:true>],[stored/uncompressed,indexed<dateCreated:2013-02-28-14-03-05-0-PM>],[stored/uncompressed,indexed,tokenized<aaa:109122482450911>],[stored/uncompressed,indexed<lastUpdated:2013-02-28-14-03-05-0-PM>],[stored/uncompressed,indexed,tokenized<name:Asc>],[stored/uncompressed,indexed<version:0>],[stored/uncompressed,indexed,omitNorms,omitTf<$/uid:Bs#456#>]]] after [10000ms] and backlog size [100] 
     at org.compass.core.lucene.engine.transaction.support.AbstractConcurrentTransactionProcessor$Processor.addJob(AbstractConcurrentTransactionProcessor.java:496) 
     at org.compass.core.lucene.engine.transaction.support.AbstractConcurrentTransactionProcessor.create(AbstractConcurrentTransactionProcessor.java:158) 
     at org.compass.core.lucene.engine.LuceneSearchEngine.createOrUpdate(LuceneSearchEngine.java:290) 
     at org.compass.core.lucene.engine.LuceneSearchEngine.create(LuceneSearchEngine.java:268) 
     at org.compass.core.impl.DefaultCompassSession.create(DefaultCompassSession.java:413) 
     at org.compass.core.impl.DefaultCompassSession.create(DefaultCompassSession.java:397) 
     at org.compass.core.impl.ExistingCompassSession.create(ExistingCompassSession.java:305) 
     at org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer$RowBuffer.flush(ScrollableHibernateIndexEntitiesIndexer.java:212) 
     at org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer$RowBuffer.close(ScrollableHibernateIndexEntitiesIndexer.java:206) 
     at org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer.performIndex(ScrollableHibernateIndexEntitiesIndexer.java:151) 
     at org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1.doInCompassWithoutResult(ConcurrentParallelIndexExecutor.java:104) 
     at org.compass.core.CompassCallbackWithoutResult.doInCompass(CompassCallbackWithoutResult.java:29) 
     at org.compass.core.CompassTemplate.execute(CompassTemplate.java:133) 
     at org.compass.gps.impl.SingleCompassGps.executeForIndex(SingleCompassGps.java:147) 
     at org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1.call(ConcurrentParallelIndexExecutor.java:102) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:679) 

Naszym problemem jest podobna do poniższej postu

http://grails.1312388.n4.nabble.com/hibernate-Searchable-failing-to-index-on-program-start-td4119566.html

Próbowaliśmy wszelkich starań, aby rozwiązać ten problem, ale bez powodzenia. Pomóż nam rozwiązać ten problem.

+0

próbowałeś usuwanie istniejących plików indeksu? – uchamp

+0

tak, ale nie zadziałało w ogóle –

+0

@ Shashank.gupta40, przy odrobinie szczęścia, również mam ten problem. Możesz mi pomóc. –

Odpowiedz

0

Idź do konsoli i wpisz:

grails install-searchable-config 

otwórz myproject/grails-app/conf/Searchable.groovy i sprawdzić następujące zmiany wartości i jak zauważyłem.

mirrorChanges = false 
bulkIndexOnStartup = false 

w Bootstrap.groovy:

class BootStrap { 
    def searchableService 

    def init = { servletContext -> 
     // do any data loading you would normally do 

     // Manually start the mirroring process to ensure that it comes after the automated migrations. 
     println "Performing bulk index" 
     searchableService.reindex() 
     println "Starting mirror service" 
     searchableService.startMirroring() 
    } 
} 
+0

Ale nie będzie indeksować bazy danych, co zrobić, jeśli musimy zindeksować DB? –

+0

zobacz moją zaktualizowaną odpowiedź – confile

+1

Podążyłem za twoimi krokami, ale wciąż jest błąd. 13 Wrz 2013 14: 36: 17: 225 BŁĄD {hibernacja}: Nieudane indeksowanie bazy danych org.compass.core.engine.SearchEngineException: Procesor [2]: Nie powiodło się dodanie zadania [Zadanie Utwórz [alias [Członek]] uid [Member # 586 #]] Zasób [{Członek} ..... po [10000ms] i rozmiar zaległości [100] Każdy pomysł? –

Powiązane problemy