Effizientes Filtern / Suchen

Wir haben eine gehostete Anwendung, die Seiten mit Inhalten verwaltet. Jede Seite kann eine Reihe von benutzerdefinierten Feldern und einige Standardfelder (Zeitstempel, Benutzername, Benutzer-E-Mail-Adresse usw.) enthalten.

Was ist eine effiziente Methode zum Filtern / Suchen, wenn möglicherweise Hunderte verschiedener Websites das System verwenden? Stellen Sie sich eine Rasteransicht vor, die Sie einschränken möchten. Sie können nach bestimmten Feldern (Benutzer-ID, Datum) filtern oder eine Volltextsuche eingeben.

Zum Beispiel wäre "Alle Seiten, die mit Benutzer-ID 10 gestartet wurden" eine ziemlich schnelle Abfrage für eine MySQL-Datenbank. Aber Dinge wie "Alle Seiten, die von einem Benutzer mit einer Benutzer-ID von 10 gestartet wurden und mit [einigen Suchanfragen] übereinstimmen" würden die Datenbank stören, sodass sie für eine Suchmaschine wie Lucene geeignet ist.

rundsätzlich frage ich mich, wie andere große Websites so etwas tun. Verwenden sie eine Suchmaschine zu 100% für alle Arten von Filtern? Mischen sie Datenbankabfragen mit einer Suchmaschine?

Wenn wir @ verwendnuei einer Suchmaschine liegt ein Problem mit der Verzögerungszeit vor, die erforderlich ist, damit ein neues / aktualisiertes Objekt im Suchindex angezeigt wird. Das heißt, ich habe gelesen, dass es nicht klug ist, den Index zu aktualisierensofor, und dies stattdessen in Stapeln. Auch wenn dies alle 5 Minuten bedeutet, sind Benutzer verwirrt, wenn ihre kürzlich hinzugefügte Seite nicht sofort aufgelistet wird, wenn sie eine einfache Seitenauflistung anzeigen (z. B. eine Suchanfrage nach "Kategorie: 5").

Wir verwenden MySQL und haben uns Lucene für die Suche genau angesehen. Gibt es eine andere Technologie, die ich nicht kenne?

Mein Gedanke ist, eine einfache Filterseite anzubieten, die MySQL zum Filtern nach Grundfeldern verwendet. Bieten Sie dann eine separate Volltextsuche an, die ähnliche Ergebnisse wie Google liefert. Ist das der einzige Weg?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage