We use Grails 2.1.1 and the Searchable 0.6.4 plugin in our Grails applications and search for some domains, which are listed below with all the mappings.
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 ...... }
Data is successfully saved with the correct mapping and restrictions.
The problem starts when the user below has a tree view with an attitude
User a1 β UserEducations b1 β Schools d1
and
User a2 β UserEducations b2 β Schools d1
or
User a1 β UserWorkings c1 β Organization e1
and
User a2 β UserWorkings c2 β Organization e1
(We are not sure that the problem may arise due to the large amount of data.)
Then, when we try to start the server, we get an exception below, and the server does not start
We tried to remove the search index and restart it again, then it also does not start.
The server starts only when we trim the tables corresponding to the above 5 domains.
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)
Our problem is similar to the following article
http://grails.1312388.n4.nabble.com/hibernate-Searchable-failing-to-index-on-program-start-td4119566.html
We tried to solve the problem, but no luck. Please help us solve this problem.