SOLR - 如何对数据库进行部分索引?

时间:2009-10-28 13:51:25

标签: database postgresql full-text-search solr

我有一个postgresql数据库。在我需要索引的表中,我有大约2000万行。当我想在一次尝试中对它们进行索引时(像“select * from table_name”那样),我有Java OutOfMemory错误,甚至,如果我给JVM更多的内存。

SOLR中是否有任何选项可以逐个索引表(例如,对前1000000行执行sql,然后对其进行索引,然后执行sql为第二百万行)?

现在我正在使用LIMIT的SQL查询。但是,每当solr索引它时,我都需要再次手动启动它。

更新:好的,现在1.4了。没有OutOfMemory Exceptions,似乎,Apache在DIH上做了很大的工作。此外,现在我们可以通过请求传递参数,并在我们的SQL选择中使用它们。哇!

3 个答案:

答案 0 :(得分:1)

在这里查看有关“游标”的内容,这可能会有所帮助。

http://jdbc.postgresql.org/documentation/83/query.html

答案 1 :(得分:0)

您是否配置了autoCommit,batchSize?如果这样做,可能是this bug,请尝试更新到trunk。

答案 2 :(得分:0)

您是否考虑过使用SolrJ作为客户?虽然DIH非常棒,但Solr与您的数据库之间的紧密耦合意味着很难操纵您的数据并解决问题。

使用SolrJ客户端,您可以批量迭代控制数据库,然后转换并直接转储到Solr。此外,使用SolrJ新的二进制java流格式而不是XML意味着索引你的2000万行应该相当快。

DIH很棒,直到你最终遇到这样的问题!