我编写了一个自定义索引器,使用php将数据从mysql导入到solr,而不是使用solr自己的数据导入处理程序。它很好用,但是我在做期刊索引的时候被困住了。下面是我脑海中的过程:
所以我的问题是,这是一个好方法,还是你建议更有效的方法。谢谢。
Ps:我没有使用solr的数据导入处理程序,因为我自己有太多的事情要做,比如分层数据管理等等。
发布于 2012-03-13 09:55:31
当更改项或从DB中删除项时,可以开始跟踪更改。然后,只需查看该列表就可以更新索引。或向您的DB实体添加“已创建/最后更新”字段。但这可能是一个复杂的任务,取决于您的系统架构和逻辑。
您还可以保存以检查您的项目是否存在于数据库或索引中,只需重新索引所有内容--在数据集上可能不会太快(只需确保相同的索引实体将收到与以前相同的Solr ID,以取代其旧版本而不是复制它)。
另一种方法是只包含最近修改的项,因此必须将Solr与Solr合并,而不是Solr与DB合并。
如果您仍然需要检查每个项目,那么最好首先从DB请求它们,因为Solr搜索通常更快。然后,您可以在一个批处理中运行Solr查询,请求多个文档的ID,然后遍历该集合,以便将它们与您的DB记录匹配。因此,像request这样的结果来自DB /生成它们的Solr / request文档,在一个查询/匹配集中按ID计算应该可以工作。但这显然是一种“蛮力”的方法。
发布于 2012-03-14 11:27:54
另一种选择是在应用程序中实现一个过滤器(比如请求拦截器--对于PHP不知道,但在java世界中称为filter ),它将在solr中立即更新文档,因为它是通过mysql中的应用程序更改的。
https://stackoverflow.com/questions/9679501
复制相似问题