Lucene Solr DIH--如何处理已删除的文档?
我正在玩一个Solr支持的Web应用程序搜索,我想最好使用DataImportHandler通过数据库处理与应用程序的同步。我喜欢只检查Lucene Solr DIH--如何处理已删除的文档?,lucene,solr,dataimporthandler,Lucene,Solr,Dataimporthandler,我正在玩一个Solr支持的Web应用程序搜索,我想最好使用DataImportHandler通过数据库处理与应用程序的同步。我喜欢只检查last\u updated\u date字段的优雅。好东西。然而,我不知道如何用这种方法处理删除文档的问题。在我看来,我有两个选择。当文档被删除时,我可以从客户端向Solr发送一条明确的消息,或者我可以添加一个“deleted”(已删除)标志并将对象保留在数据库中,这样Solr会注意到文档已更改,现在已被“deleted”(删除)。我可以添加一个查询过滤器,该
last\u updated\u date
字段的优雅。好东西。然而,我不知道如何用这种方法处理删除文档的问题。在我看来,我有两个选择。当文档被删除时,我可以从客户端向Solr发送一条明确的消息,或者我可以添加一个“deleted”(已删除)标志并将对象保留在数据库中,这样Solr会注意到文档已更改,现在已被“deleted”(删除)。我可以添加一个查询过滤器,该过滤器将忽略带有deleted(已删除)标志的结果,但是在Lucene索引中包含所有已删除的文档似乎效率低下。其他人做什么?以下是您的选择:
- 使用$deleteDocById或$deleteDocByQuery(需要Solr 1.4+)
- 在导入之前,使用DIH键删除整个索引
- 用于定义导入前要清理的内容。(需要Solr 1.4+)
- 使用数据库触发器而不是DIH来管理索引的更新
- 如果您使用某种ORM,请使用其拦截功能,而不是DIH。例如,您可以使用在更新、插入或删除时更新索引