Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene Solr DIH--如何处理已删除的文档?_Lucene_Solr_Dataimporthandler - Fatal编程技术网

Lucene Solr DIH--如何处理已删除的文档?

Lucene Solr DIH--如何处理已删除的文档?,lucene,solr,dataimporthandler,Lucene,Solr,Dataimporthandler,我正在玩一个Solr支持的Web应用程序搜索,我想最好使用DataImportHandler通过数据库处理与应用程序的同步。我喜欢只检查last\u updated\u date字段的优雅。好东西。然而,我不知道如何用这种方法处理删除文档的问题。在我看来,我有两个选择。当文档被删除时,我可以从客户端向Solr发送一条明确的消息,或者我可以添加一个“deleted”(已删除)标志并将对象保留在数据库中,这样Solr会注意到文档已更改,现在已被“deleted”(删除)。我可以添加一个查询过滤器,该

我正在玩一个Solr支持的Web应用程序搜索,我想最好使用DataImportHandler通过数据库处理与应用程序的同步。我喜欢只检查
last\u updated\u date
字段的优雅。好东西。然而,我不知道如何用这种方法处理删除文档的问题。在我看来,我有两个选择。当文档被删除时,我可以从客户端向Solr发送一条明确的消息,或者我可以添加一个“deleted”(已删除)标志并将对象保留在数据库中,这样Solr会注意到文档已更改,现在已被“deleted”(删除)。我可以添加一个查询过滤器,该过滤器将忽略带有deleted(已删除)标志的结果,但是在Lucene索引中包含所有已删除的文档似乎效率低下。其他人做什么?

以下是您的选择:

  • 使用$deleteDocById或$deleteDocByQuery(需要Solr 1.4+)
  • 在导入之前,使用DIH键删除整个索引
  • 用于定义导入前要清理的内容。(需要Solr 1.4+)
  • 使用数据库触发器而不是DIH来管理索引的更新
  • 如果您使用某种ORM,请使用其拦截功能,而不是DIH。例如,您可以使用在更新、插入或删除时更新索引

我希望有一个“已删除”标志,这样我就不会真正删除我的数据!取决于你有多偏执。我喜欢毛里西奥的建议…

这是一个很棒的列表!我仍在使用1.3,但这是研究切换的一个令人信服的理由。是的,Solr 1.4刚刚进入RC,最终版本即将发布。嗨,Mauricio,在对删除的文档执行增量导入时,有没有关于如何使用特殊命令的好例子?是否必须使用脚本将它们添加到行中?