通过 SolrJ 索引数据库

index db via SolrJ

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

我怎样才能通过 SorJ 客户端为我的数据库建立索引?

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

如果您只需要能够打开到您的 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 用于所有索引,因此您需要考虑在 delta-import 之后何时 运行 您的 optimize 命令。 optimize 是一项非常昂贵的操作,因为它会暂时使您的索引大小翻倍。你可能想使用像 Quartz 这样的东西来安排 optimize 命令到 运行 最多一天一次或两次。就个人而言,我将 crons 用于 delta-importoptimize.