【发布时间】:2012-12-14 16:10:18
【问题描述】:
我有一个使用 Spring+JPA+Hibernate 在 Heorku 上运行的应用程序,我使用 Hibernate-Search 进行 FullTextSearch。在我的本地机器上,我将索引存储在文件系统上。我在 persistence.xml 中的配置。
<property name="hibernate.search.default.directory_provider"
value="filesystem"/>
<property name="hibernate.search.default.indexBase"
value="/opt/lucene/indexes"/>
Heroku 对文件系统具有只读访问权限,然后我将索引存储在内存中,但这不是最好的方法,因为当服务器实例重新启动时索引会丢失。最好的方法是如何做到这一点?有没有办法将休眠搜索与 WebSolr 或其他东西集成?
【问题讨论】:
-
Heroku 没有只读文件系统(在 Cedar 上);只是不鼓励您写入文件系统,因为您的多个节点可能会不同步。如果您确定索引将在每个节点上生成相同,或者每个节点上具有不同的索引不是问题,那么您可以写入文件系统。不过,我仍然倾向于将您的应用程序连接到 Heroku 的众多优秀搜索插件之一的方法。
-
Heroku 有一个临时文件系统,“这意味着您不能动态写入文件系统以进行半永久存储”。哪个搜索插件可以与休眠搜索集成?
-
是的,还忘了提到 ti 的短暂性,因此您必须在每次启动时重新生成索引。不幸的是,我不确定如何将 Hibernate 连接到他们的附加组件之一,而不是连接其他系统,所以希望有人会用该信息留下正确的答案。
-
我找到了解决方案。我将在 heroku 上使用 mongodb 插件来存储我的索引,我已经基于 mongodb 目录为 lucene 实现了一个用于休眠搜索的目录提供程序,并且在我的本地机器上工作正常。
-
太棒了!我建议您将其添加为“答案”并自己接受,以便对偶然发现此页面的其他人有用。
标签: java heroku solr lucene hibernate-search