mysql - 通过 SolrJ 索引数据库

标签 mysql indexing solr 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。如果需要,您还可以定义自己的 bean,而不使用 solr 架构。 (当然,所有这些都假设您正在使用 Spring,但您可能不是,但对于使用该框架的人来说,这是一个选项。)

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

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

上面的代码告诉 Solrj 创建一个查询,该查询将执行完全导入类型的数据导入。

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

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

关于mysql - 通过 SolrJ 索引数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070605/

相关文章:

mysql - 索引失败。回滚所有更改。 (Solr 数据导入)

solr - 如何防止 solr 搜索中的特殊字符

mysql - 使用 SQL 条目进行数学运算

mysql - 有用的 MySQL 博客/新闻网站?

Javascript - 创建数组索引和访问

java - 使用 Lucene 索引时有什么处理重复的好方法吗?

php - mysql 函数 sum() 显示意外结果!

mysql - InnoDB 分区表上的 MOD(primarykey) 是否会导致碎片

sql - SQL中的orderby/where查询需要什么样的索引?

Solr 云 : Distribution of Shards across nodes