首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr期刊索引

Solr期刊索引
EN

Stack Overflow用户
提问于 2012-03-13 06:50:10
回答 2查看 176关注 0票数 0

我编写了一个自定义索引器,使用php将数据从mysql导入到solr,而不是使用solr自己的数据导入处理程序。它很好用,但是我在做期刊索引的时候被困住了。下面是我脑海中的过程:

  1. 搜索所有索引并查找已删除的实体,并将它们与mysql中的数据进行比较,并从solr中删除它们。
  2. 在mysql中找到最近更改的实体,并且只对它们进行索引。(我至少有12个核心表,我需要检查所有)

所以我的问题是,这是一个好方法,还是你建议更有效的方法。谢谢。

Ps:我没有使用solr的数据导入处理程序,因为我自己有太多的事情要做,比如分层数据管理等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-13 09:55:31

当更改项或从DB中删除项时,可以开始跟踪更改。然后,只需查看该列表就可以更新索引。或向您的DB实体添加“已创建/最后更新”字段。但这可能是一个复杂的任务,取决于您的系统架构和逻辑。

您还可以保存以检查您的项目是否存在于数据库或索引中,只需重新索引所有内容--在数据集上可能不会太快(只需确保相同的索引实体将收到与以前相同的Solr ID,以取代其旧版本而不是复制它)。

另一种方法是只包含最近修改的项,因此必须将Solr与Solr合并,而不是Solr与DB合并。

如果您仍然需要检查每个项目,那么最好首先从DB请求它们,因为Solr搜索通常更快。然后,您可以在一个批处理中运行Solr查询,请求多个文档的ID,然后遍历该集合,以便将它们与您的DB记录匹配。因此,像request这样的结果来自DB /生成它们的Solr / request文档,在一个查询/匹配集中按ID计算应该可以工作。但这显然是一种“蛮力”的方法。

票数 1
EN

Stack Overflow用户

发布于 2012-03-14 11:27:54

另一种选择是在应用程序中实现一个过滤器(比如请求拦截器--对于PHP不知道,但在java世界中称为filter ),它将在solr中立即更新文档,因为它是通过mysql中的应用程序更改的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9679501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档