Database SOLR-如何部分索引数据库?

Database SOLR-如何部分索引数据库?,database,postgresql,full-text-search,solr,Database,Postgresql,Full Text Search,Solr,我有一个postgresql数据库。在我需要索引的表中,我有大约2000万行。当我想在一次尝试中对它们进行索引时(如“select*fromtable_name”),我会出现Java OutOfMemory错误,即使我会给JVM更多内存 SOLR中是否有任何选项可以对表逐部分进行索引(例如,对前1000000行执行sql,然后对其进行索引,然后对第二个一百万行执行sql) 现在我正在使用带限制的sql查询。但是,每当solr为它编制索引时,我都需要手动重新启动它 更新:好的,1.4现在已经发布了

我有一个postgresql数据库。在我需要索引的表中,我有大约2000万行。当我想在一次尝试中对它们进行索引时(如“select*fromtable_name”),我会出现Java OutOfMemory错误,即使我会给JVM更多内存

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

现在我正在使用带限制的sql查询。但是,每当solr为它编制索引时,我都需要手动重新启动它


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

您是否配置了自动提交、批量大小?如果您这样做了,可能是这样,请尝试更新到trunk。

您是否考虑过使用SolrJ作为客户端?虽然DIH很好,但Solr和数据库之间的紧密耦合意味着很难处理数据和解决问题

有了SolrJ客户机,您就可以对数据库进行批量迭代,然后周转并直接转储到Solr中。另外,使用SolrJ新的二进制java流格式而不是XML意味着为2000万行建立索引应该相当快

DIH很棒,直到你最终陷入这样的问题

请看这里关于“游标”的部分,这可能会有所帮助


据我所知。SolrJ是一个Java客户机。对吗?但是,在我的例子中,我使用SOLR作为独立的全文搜索服务器,没有Java应用程序。SolrJ是一个Java客户机。然而,对于Ruby、Python、.NET等,您也可以使用许多不同的客户机。不幸的是,现在的二进制流格式是特定于Java的。我使用SOLR作为数据库索引的web服务器。我的数据库是PostgreSQL。