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

标签 lucene solr dataimporthandler

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

最佳答案

以下是您的选择:

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

关于lucene - Solr DIH -- 如何处理已删除的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1555610/

相关文章:

Solr DataImportHandler - 转换 XML 字段

java - Geode 中的 Lucene LaLong 查询和查询字符串

elasticsearch - 与Elasticsearch query_string完全匹配

lucene - ElasticSearch-如何优先考虑来自同一行的匹配

php - 如何使用 Apache SOLR 和 PHP 代码突出显示搜索结果

ruby-on-rails - 在 Sunspot 中以不区分大小写的字母顺序排序结果

linq - Solr 查询难题

Solr 模糊搜索 'hotdog' 和 'hot dog'

mysql - Solr DataImportHandler 外部表

mysql - Solr DataImportHandler MySQL 5.0 SELECT CONCAT 查询结果采用base64编码