我是Solr的初学者。我有一个场景,我需要索引MySQL数据库中的数据并需要查询它们。我已经想出使用DIH提供我的数据库数据导入配置。我也知道通过SolrJ查询我的索引。
如何通过SorJ客户端为我的数据库建立索引?
有什么方法可以使用我的配置文件并实现相同的目的。我们需要使用java API,因此所有索引和查询都只能通过SolrJ来完成。
答案 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您的qt
和command
正在使用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-import
和optimize
。