【问题标题】:Solr DIH -- How to handle deleted documents?Solr DIH -- 如何处理已删除的文档?
【发布时间】:2009-10-12 16:35:32
【问题描述】:

我正在为我的 web 应用程序使用 Solr 驱动的搜索,我认为最好使用 DataImportHandler 来处理通过数据库与应用程序同步。我喜欢只检查last_updated_date 字段的优雅。好东西。但是,我不知道如何使用这种方法处理删除文档。在我看来,我有两个选择。我可以在删除文档时从客户端向 Solr 发送显式消息,或者我可以添加“已删除”标志并将对象保留在数据库中,这样 Solr 会注意到文档已更改并且现在已“删除” 。”我可以添加一个查询过滤器,它会忽略带有已删除标志的结果,但是将所有已删除的文档包含在 Lucene 索引中似乎效率低下。其他人是怎么做的?

【问题讨论】:

    标签: lucene solr dataimporthandler


    【解决方案1】:

    这些是您的选择:

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

    【讨论】:

    • 这是一个很棒的清单!我仍在使用 1.3,但这是考虑切换的一个令人信服的理由。
    • 是的,Solr 1.4 刚刚进入 RC,最终版本即将发布。
    • 您好 Mauricio,在对已删除的文档进行增量导入时,是否有任何好的示例如何使用 preImportDeleteQuery?
    • 是否有说明如何使用特殊命令?是否必须使用脚本将它们添加到行中?
    【解决方案2】:

    我喜欢有一个“已删除”标志,所以我实际上并没有删除我的数据!取决于你有多偏执。我喜欢毛里西奥的建议...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多