Vor kurzem habe ich mich an den Einschränkungen der Dokumentindizierungs-Engines gewundert. Ich habe eine kleine Website entwickelt, die einige ziemlich robuste Suchfunktionen benötigt, aber aufgrund ihrer Hardwareeinschränkungen konnte ich keine Lucene-ähnliche Lösung (wie Solr oder ElasticSearch, wie ich es normalerweise tun würde) bereitstellen, um diesen Bedarf zu decken.
Und selbst dann, während ich einige komplexe Daten und Berechnungen bereitstellen musste, die datenbankintensiv waren, musste ich nicht mehr als 250.000 potenzielle Datensätze verarbeiten. Die Bereitstellung einer gesamten Solr- oder ES-Instanz, um dies zu handhaben, schien eine Verschwendung zu sein.
Nachdem ich darüber nachgedacht habe, scheint es ein ziemlich großes Problem zu sein. Die meisten Benutzer behandeln Suchanforderungen ausschließlich mit SQL. Sie führen nur SQL-Abfragen für ihre Daten aus und das war's. Ihre Suchfunktionen sind auch schrecklich.
Das Durchführen einer umfassenden Volltextsuche mit Platzhaltern kann auf einigen Systemen (insbesondere auf gemeinsam genutzten Hosts) schmerzhaft langsam sein und Ihre Datenbank blockieren, insbesondere wenn Sie komplizierte Abfragen und viele Verknüpfungen haben.
Am Ende führen Sie mehrere Abfragen auf eine einzige Anfrage des Benutzers aus. Sie können dies mit immer komplizierteren Abfragen umgehen, sehen Sie sich jedoch den vorherigen Punkt an.
Fehlende Funktionen, die normalerweise in Volltext-Engines vorhanden sind.
Datenbanken hatten das gleiche Problem, dass sie als Server bereitgestellt werden mussten, und dann kam SQLite und plötzlich konnten wir eine Datenbank bereitstellen, die in einer einzelnen Datei enthalten ist. Mein Googeln hat nichts hervorgebracht - fragen Sie sich, ob es so etwas für die Indizierung / Suche im Volltext gibt.
Welche Faktoren müssen berücksichtigt werden, wenn entschieden wird, ob eine einfache Dokumentindizierung implementiert werden soll (z. B. wie in den Antworten auf eine andere Frage erläutert ) oder SQL für diese Situationen weiterhin verwendet werden soll?