8

我的应用程序有 MySql 数据库。我实现了 solr 搜索并使用 dataimporthandler(DIH) 将数据库中的数据索引到 solr。我的问题是:如果数据库得到更新,那么我的 solr 索引是否会自动更新数据库中添加的新数据。. 这意味着每次数据库表更改时我都不需要手动运行索引过程。如果是,请告诉我如何实现这一点。

4

4 回答 4

3

我不认为 Solr 有可能让您在数据库发生任何更新时索引数据。

但是可能有一些可能性,例如,在触发器的帮助下- 有可能从触发器运行外部应用程序。

编写一个 CRON 来触发PHP脚本,该脚本从数据库中读取并将其索引到Solr. 编写一个触发器(调用此脚本)进行CRUD操作并将其转储到 DB 中,因此,每当 DB 发生某些事情时,此触发器将调用上述脚本并可能发生索引。

请参见:

从 MySQL 触发器调用 PHP 脚本

自动调度:

有关调度的更多信息,请参阅这篇文章如何在 Solr 中安排数据导入。第二个答案解释了如何使用Cron导入。

于 2011-06-24T11:26:42.077 回答
1

由于您最初使用 DataImportHandler 将数据加载到 Solr... 您可以创建一个Delta Import Handler,该处理程序使用curl从 cron 作业执行,以定期将数据库中的更改添加到索引。此外,如果您需要更多实时更新,正如@Rakesh 建议的那样,您可以在数据库中使用触发器并启动对 Delta DIH 的 curl 调用。

于 2011-06-24T11:43:44.887 回答
1

您可以使用浏览器和任务管理器导入数据。在 Windows 服务器上执行以下步骤...转到管理工具 => 任务计划单击“创建任务”

现在将打开一个创建任务屏幕,其中包含选项卡常规、触发器、操作、条件、设置。

在 genral 选项卡中输入任务名称“Solrdataimport”,在描述中输入“Import mysql data”

现在转到触发器选项卡在设置检查每日单击新。在高级设置重复任务每隔...把时间放在那里任何你想要的。单击确定

现在转到 Actions 按钮单击 new Button IN setting put Program/Script "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 这是 chrome 浏览器的安装路径。在 Add Arguments 中输入http: //localhost:8983/solr/#/collection1/dataimport//dataimport?command=full-import&clean=true 然后点击确定

使用上述所有过程数据导入将自动运行。如果停止 Imort 过程,请遵循上述所有过程,只需将程序/脚本“taskkill”更改为“C:\Program Files (x86)\Google\Chrome\Application \chrome.exe" 在 Actions 选项卡下 在参数中输入 "f /im chrome.exe"

根据需求设置触发时序

于 2015-08-05T11:43:40.100 回答
0

您正在寻找的是“delta-import”,许多其他帖子都包含有关此内容的信息。我创建了一个 Windows WPF 应用程序和服务,以定期向 Solr 发出命令,因为如果您有很多内核/环境,使用 CRON 作业和任务计划程序有点难以维护。

https://github.com/systemidx/SolrScheduler

您基本上只需将 JSON 文件放入指定文件夹中,它将使用 REST 客户端向 Solr 发出命令。

于 2016-03-09T04:32:38.260 回答