Ja, Volltextsuche durch Lucene und Datenspeicherung durch eine traditionelle Datenbank-Architektur eine gut unterstützte bereitstellt. , für eine kurze Einführung. Eine typische Implementierung besteht darin, alles zu indizieren, das die Suche unterstützen soll, und nur einen eindeutigen Bezeichner im Lucene-Index zu speichern und alle Datensätze, die durch eine Suche gefunden wurden, basierend auf der ID aus der Datenbank abzurufen. Wenn Sie die Datenbanklast reduzieren möchten, können Sie einige Informationen in Lucene speichern, um eine Liste der Suchergebnisse anzuzeigen, und nur die Datenbank abfragen, um das vollständige Dokument abzurufen.
Da Speicherplatz gespart wird, gibt es ein gewisses Maß an Duplizierung. Dies gilt auch, wenn Sie nur Lucene, obwohl. Lucene speichert den invertierten Index, der zum Suchen ganz getrennt von den gespeicherten Daten verwendet wird. Um Platz zu sparen, empfehle ich, sehr genau darüber nachzudenken, welche Daten Sie indexieren und was Sie speichern und später abrufen können. Was Sie speichern, ist besonders wichtig, um in Lucene Platz zu sparen, da indexierte Werte in den meisten Fällen sehr platzsparend sind.
Lucene kann sicherlich eine Tag-Suche implementieren. Der einfache Weg, es zu implementieren wäre jeden Tag auf ein Feld Ihrer Wahl hinzuzufügen (ich nenne ist „Tags“, die sinnvoll erscheint), beim Aufbau des Dokuments, wie zum Beispiel:
document.add(new Field("tags", "widget", Field.Store.NO, Field.Index.ANALYZED));
document.add(new Field("tags", "forkids", Field.Store.NO, Field.Index.ANALYZED));
und ich könnte einfach einen erforderlichen Begriff zu jeder Abfrage hinzufügen, um nur innerhalb eines bestimmten Tags zu suchen. Zum Beispiel, wenn ich nach "ein paar Sachen" suchen sollte, aber nur mit dem Tag "forkids", könnte ich eine Abfrage schreiben wie:
Danke für Ihre Antwort. Denkst du, dass die Pflege von Dokumenten nur in Lucene eine allgemeine Architektur wäre? Gibt es einen Fall, Daten in Datenbank und Lucene zu pflegen? – soleiljy
Wenn Sie nur an den tatsächlichen Inhalten und einigen Metadaten interessiert sind, sehe ich keine Notwendigkeit für eine zusätzliche Datenbank. – Elmer