我的应用程序使用Grails可搜索插件,在下面使用Compass。
开始索引的表大约为 36 MB,并且正在构建大约 350 MB 的索引。这在大多数人的书中都很小。
如果我们删除索引并启动 Grails 应用程序,索引文件会按预期重建,但是在运行大约一天后,我们发现了这个错误。我们在TellMeEntity
实例上调用“reindex”,因为它们被保存以确保索引被更新。
异常 org.compass.core.engine.SearchEngineException:无法删除别名 [TellMeEntity] 和 ids [[stored/uncompressed,indexed,omitNorms,omitTf]];嵌套异常是 java.io.FileNotFoundException: /var/www/web17/log/mne/index/tellmeentity/segments_2 (No such file or directory) at org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction(doDelete :348)
显然,一旦发生此错误,索引就不会更新,并且搜索不适用于新输入的数据。
我们检查了磁盘空间等简单的东西。“segments_2”不存在,但我希望 Compass 自己创建它。
在grails-app/conf/Searchable.groovy
文件中:
……
mirrorChanges = true
bulkIndexOnStartup = "fork"
……
在我的代码中:
……
def formInstance = new TellMeEntity(name:'form',dataOwner:session.community,createBy:session.zoner,tellMeSite:form).save()
formInstance.reindex()
……
我目前的经验是,这段代码可以运行大约 24 小时,但随后开始出现问题。我们每天产生大约 3000 个新条目,这听起来并不高,所以我认为这与数量无关。
如何解决这个问题?