索引db通过SolrJ

时间:2015-03-16 06:15:00

标签: mysql indexing solr solrj

我是Solr的初学者。我有一个场景,我需要索引MySQL数据库中的数据并需要查询它们。我已经想出使用DIH提供我的数据库数据导入配置。我也知道通过SolrJ查询我的索引。

如何通过SorJ客户端为我的数据库建立索引?

有什么方法可以使用我的配置文件并实现相同的目的。我们需要使用java API,因此所有索引和查询都只能通过SolrJ来完成。

1 个答案:

答案 0 :(得分:0)

如果您只需要能够打开与Solr服务器的连接以进行索引(并且不需要将您的配置文件与SolrJ项目实际集成),那么这很简单。

首先,你需要打开一个SolrJ连接,这样就完成了:

HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr"); 

另一个选择是利用Spring Data Solr的solr模式,并使Solr服务器bean执行以下操作:

<solr:solr-server id="fullSearchIndex" url="${solrServiceBaseURL}/${solr.full.core}" />

然后您可以使用Autowired注释在任何需要的地方使用bean。如果需要,您还可以在不使用solr架构的情况下定义自己的bean。 (当然,所有这些都假定您使用的是Spring,您可能不会使用它,但对于使用该框架的人来说,这是一个选项。)

接下来,您需要告诉SolrJ您的qtcommand正在使用ModifiableSolrParams,或者可能是其他查询类之一:

params.set("qt", "/dataimport");
params.set("command", "full-import");
QueryResponse response = solrServer.query(params);

以上代码告诉Solrj创建一个查询,该查询将执行full-import类型的数据导入。

我认为值得指出的是,如果要导入许多记录,SolrJ程序可能会在导入之前结束。要查看导入状态,请点击http://localhost:8983/solr/dataimport。根据我的经验,SolrJ程序启动几秒钟,发送导入查询并结束,但它启动的实际过程需要几分钟。

此外,由于您需要将SolrJ用于所有索引,因此您需要考虑何时在optimize之后运行delta-import命令。 optimize是一项非常昂贵的操作,因为它会使您的索引大小暂时加倍。您可能希望使用Quartz之类的东西来安排optimize命令最多每天运行一次或两次。就个人而言,我使用crons作为delta-importoptimize