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

有帮助吗?

解决方案

这些是您的选择:

  • 使用 DIH 特殊命令 $deleteDocById 或 $deleteDocByQuery(需要 Solr 1.4+)
  • 使用 干净的参数 DIH 在导入之前删除整个索引。
  • 使用 预导入删除查询 定义导入前要清理的内容。(需要 Solr 1.4+)
  • 使用数据库触发器而不是 DIH 来管理索引更新。
  • 如果您使用某种 ORM,请使用其拦截功能而不是 DIH。例如你可以使用 休眠事件 在更新、插入或删除时更新索引。

其他提示

我想有一个“删除”的标志,所以我不真正删除我的数据!取决于你是如何偏执。我喜欢毛的建议...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top