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?

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top