Frage

Ich spiele mit einer Solr-powered Suche nach meinem Webapp um, und ich dachte, es wäre am besten, die DataImportHandler zu Griff Synchronisierung mit der App über die Datenbank zu verwenden. Ich mag die Eleganz nur das last_updated_date Feld überprüfen. Gutes Zeug. Allerdings weiß ich nicht, wie das Löschen von Dokumenten mit diesem Ansatz zu behandeln. So wie ich es sehe, habe ich die Wahl zwischen 2 bekam. Ich konnte entweder eine explizite Nachricht an Solr vom Client senden, wenn ein Dokument gelöscht wird, oder ich könnte ein „Gelöscht“ Flag hinzufügen und das Objekt in der Datenbank verlassen, so dass Solr wird feststellen, dass das Dokument geändert hat und nun „gelöscht .“ Ich könnte ein Abfragefilter hinzufügen, die Ergebnisse mit dem gelöschten Flag außer Acht lassen würde, aber es scheint ineffizient alle gelöschten Dokumente in der Lucene Index aufzunehmen. Was andere Leute tun?

War es hilfreich?

Lösung

Das sind Ihre Möglichkeiten:

  • Verwenden Sie DIH spezielle Befehle $ deleteDocById oder $ deleteDocByQuery (erfordert Solr 1.4 +)
  • Verwenden Sie die sauber Parameter von DIH den gesamten Index löschen vor dem Importieren.
  • Verwenden Sie preImportDeleteQuery zu definieren, was vor dem Import gereinigt werden wird. (Erfordert Solr 1.4 +)
  • Verwenden Sie Datenbank-Trigger statt DIH zu verwalten, den Index zu aktualisieren.
  • Wenn Sie irgendeine Art von ORM verwenden verwenden seine Überwachungsmöglichkeiten statt DIH. Zum Beispiel können Sie Hibernate Ereignisse den Index auf aktualisieren, einfügen aktualisieren oder löschen.

Andere Tipps

Ich mag, ein „gelöscht“ -Kennzeichen, damit ich meine Daten nicht wirklich gelöscht werden! Hängt davon ab, wie paranoid Sie sind. Ich mag Mauricio Vorschläge ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top