首页 文章

如何自动索引数据库中的数据

提问于
浏览
6

我的应用程序有MySql数据库 . 我实现了solr搜索并使用dataimporthandler(DIH)将数据从数据库索引到solr . 我的问题是: is there any way that if database gets updated then my solr indexes automatically gets update for new data added in the database. . 这意味着每次数据库表更改时我都不需要手动运行索引进程 . 如果是,那么请告诉我如何实现这一点 .

4 回答

  • 4

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

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

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

    现在转到Triggers选项卡CLick new in Setting check Daily.In高级设置每次重复任务...把时间放在任何你想要的地方 . 点击OK

    现在转到Actions按钮单击new Button IN设置put程序/脚本"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"这是chrome浏览器的安装路径 . 在Add Arguments中输入http://localhost:8983/solr/#/collection1/dataimport//dataimport?command=full-import&clean=true并单击OK

    使用以上所有过程数据导入将自动运行 . 如果停止Imort过程,请按照上述全部过程更改程序/脚本“taskkill”代替“C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe“在”操作“选项卡下的参数中输入”f / im chrome.exe“

    根据要求设置触发时序

  • 1

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

    https://github.com/systemidx/SolrScheduler

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

  • 1

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

  • 0

    我不认为Solr中有可能让你在DB发生任何更新时索引数据 .

    但是,有可能在Triggers的帮助下,有可能从触发器运行外部应用程序 .

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

    请参阅:

    Invoking a PHP script from a MySQL trigger

    自动调度:

    有关计划的更多信息,请参阅此文章How can I Schedule data imports in Solr . 第二个答案,解释了如何使用Cron导入 .

相关问题