6

我是 Solr 的初学者,所以请耐心等待。:)

在我当前的项目中,我有一个非常简单的数据库——只有 1 个包含 4 个字段的表:id、name、subject、msg。

据我了解,每次添加(或删除)新记录时,我都需要将该记录添加到索引中,基本上执行两个操作:将记录插入数据库并将其添加到索引中。

这是标准程序,还是有办法指示 Solr 在某个时间间隔或每当有更新时自动重新索引数据库表?

另外,由于表非常简单,将这些信息存储在数据库中是否有意义?考虑到我希望记录可以按名称、主题和消息进行搜索,为什么不将其保留在 Solr 索引中?

我的设置是 Java、Hibernate、MySQL 和 Solrj。

4

2 回答 2

5

是否使用数据库实际上归结为您希望保留和增长这些数据多长时间。破坏整个 Solr 索引(并丢失所有数据)比破坏整个数据库要容易得多。此外,Solr 不支持在不从新索引开始的情况下修改模式。例如,您可以添加另一个字段就好了,但是您不能在不清除索引的情况下更改字段的名称或类型。

如果您确实使用数据库,则可以使用DataImportHandler将 Solr 设置为直接从数据库索引。对于您的模式,这应该非常简单,但是随着您的数据库变得越来越复杂,这可能会很快变得痛苦。我认为使用您已经设置的 Hibernate 对象并使用 Solrj 插入它们有一些优势。DataImportHandler 的另一个痛点是它完全使用 http 进行控制。因此,您需要管理单独的 cron 作业(或其他一些代码)来使用wgetor来处理调度curl

于 2011-04-18T16:59:00.127 回答
-1

我看到数据库有用的唯一原因是它有更好的事务支持。反正lucene(SOLR的底层引擎)只能允许一个indexwriter,所以你不能轻易地通过并发修改破坏底层记录。

就我而言,您不需要数据库。SOLR 将处理您需要的一切。

于 2011-04-13T14:43:05.503 回答