我在玩弄我的webapp一个Solr的强大的搜索功能,我想它会是最好使用DataImportHandler处理通过数据库应用程序同步。 我只是喜欢检查的风采last_updated_date
领域。 好东西。 不过,我不知道如何处理这种方法删除的文件。 我看到它的方式,我有2种选择。 我既可以从客户端发送一个明确的消息到Solr当一个文件被删除,或者我可以添加一个“删除”的标志,并保留在数据库中的对象,这样的Solr会注意到,该文件已经改变,现在是“被删除“。 我可以添加一个查询过滤器会忽略与删除标志的结果,但它似乎效率不高包括所有在Lucene索引中删除的文档。 什么是其他人呢?
Answer 1:
这是你的选择:
- 使用DIH特殊命令 $ deleteDocById或$ deleteDocByQuery(需要Solr的1.4+)
- 使用清洁参数 DIH的导入之前删除整个索引。
- 使用preImportDeleteQuery定义发生了什么事情在导入前被清除。 (需要的Solr 1.4+)
- 使用数据库触发器,而不是DIH管理更新索引。
- 如果你正在使用某种ORM的使用它的拦截能力,而不是DIH。 例如,你可以使用Hibernate的事件来更新更新索引,插入或删除。
Answer 2:
我想有一个“删除”的标志,所以我不真正删除我的数据! 取决于你是如何偏执。 我喜欢毛的建议...
文章来源: Solr DIH — How to handle deleted documents?