Solr和MySQL,如何保持更新的索引,如果简单的话,甚至需要DB?

时间:2011-04-13 14:35:57

标签: mysql database indexing solr solrj

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:-1)

我看到数据库可能有用的唯一原因是它有更好的事务支持。无论如何lucene(SOLR的底层引擎)只能允许一个索引编写器,因此你不能通过并发修改轻易破坏底层记录。

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