Solr dih - Como lidar com documentos excluídos?
-
20-09-2019 - |
Pergunta
Estou brincando com uma pesquisa movida a Solr pelo meu WebApp, e achei que seria melhor usar o DataPorthandler para lidar com a sincronização com o aplicativo através do banco de dados. Eu gosto da elegância de apenas verificar o last_updated_date
campo. Coisa boa. No entanto, não sei como lidar com a exclusão de documentos com essa abordagem. Do jeito que eu vejo, tenho 2 opções. Eu poderia enviar uma mensagem explícita para Solr do cliente quando um documento for excluído, ou eu poderia adicionar uma bandeira "excluída" e deixar o objeto no banco de dados, para que Solr perceba que o documento mudou e agora está "excluído . " Eu poderia adicionar um filtro de consulta que desconsideraria os resultados com o sinalizador excluído, mas parece ineficiente incluir todos os documentos excluídos no índice Lucene. O que outras pessoas fazem?
Solução
Estas são suas opções:
- Usar DIH Comandos especiais $ deleteDocbyId ou $ DeLetEdocbyQuery (requer Solr 1.4+)
- Use o parâmetro limpo DIH para excluir todo o índice antes de importar.
- Usar preimportDeleteQuery Para definir o que será limpo antes de importar. (requer Solr 1.4+)
- Use gatilhos de banco de dados em vez de DIH para gerenciar a atualização do índice.
- Se você estiver usando algum tipo de ORM, use seus recursos de interceptação em vez do DIH. Por exemplo, você pode usar Hibernate Events Para atualizar o índice na atualização, inserir ou excluir.
Outras dicas
Eu gosto de ter uma bandeira "excluída" para que eu não excluo meus dados! Depende de como você é paranóico. Eu gosto das sugestões de Mauricio ...