Question

Je suis jouer avec une recherche alimenté Solr pour mon webapp, et je me suis dit qu'il serait préférable d'utiliser le DataImportHandler pour gérer la synchronisation avec l'application via la base de données. J'aime l'élégance de vérifier simplement le champ last_updated_date. Bon produit. Cependant, je ne sais pas comment gérer les documents avec la suppression de cette approche. La façon dont je le vois, j'ai 2 choix. Je pouvais soit envoyer un message explicite à Solr du client lorsqu'un document est supprimé, ou je pourrais ajouter un drapeau « supprimé » et laisser l'objet dans la base de données, de sorte que Solr remarquerez que le document a changé et est maintenant « supprimé « . Je pourrais ajouter un filtre de requête qui ne tiendrait pas compte des résultats avec le drapeau supprimé, mais il semble inefficace d'inclure tous les documents supprimés dans l'index Lucene. Qu'est-ce que d'autres personnes font?

Était-ce utile?

La solution

Ce sont vos options:

  • Utilisez commandes spéciales DIH $ deleteDocById ou deleteDocByQuery $ (nécessite Solr 1.4 +)
  • Utilisez le paramètre propre de supprimer l'DIH index entier avant l'importation.
  • preImportDeleteQuery pour définir ce qui va être nettoyé avant d'importer. (Nécessite Solr 1.4 +)
  • base de données au lieu de l'utilisation déclenche pour gérer la mise à jour du DIH l'indice.
  • Si vous utilisez une sorte de ORM utiliser ses capacités d'interception au lieu de DIH. Par exemple, vous pouvez utiliser mise en veille prolongée événements mettre à jour l'index sur la mise à jour, insérer ou supprimer.

Autres conseils

J'aime avoir un « supprimé » drapeau donc je ne supprime pas mes données! Cela dépend de la façon dont vous êtes paranoïaque. J'aime les suggestions de Mauricio ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top