Sprachstammbildung in der Textsuche verwendet einen Algorithmus, um zu versuchen, Wörter in Beziehung zu setzen, die von einer gemeinsamen Basis abgeleitet sind (z. B. sollte „laufen“ mit „laufen“ übereinstimmen). Dies unterscheidet sich von der Präfixübereinstimmung (z. B. "blau" passt zu "blaubeere"), die Sie für eine Autovervollständigungsfunktion implementieren möchten.
Um typeahead.js
am effektivsten zu verwenden Bei der MongoDB-Textsuche würde ich vorschlagen, sich auf den prefetch
zu konzentrieren Unterstützung beim Vervollständigen:
-
Erstellen Sie ein
keywords
Sammlung, die die in Ihrer Sammlung verwendeten gebräuchlichen Wörter (möglicherweise mit Nutzungshäufigkeit) enthält. Sie könnten diese Sammlung erstellen, indem Sie ein Map/Reduce ausführen In der gesamten Sammlung haben Sie den Textsuchindex aktiviert und halten die Wortliste mit einem regelmäßigen Inkrementelles Zuordnen/Reduzieren wenn neue Dokumente hinzugefügt werden. -
Lassen Sie Ihre Anwendung ein JSON-Dokument aus den
keywords
generieren Sammlung mit den eindeutigen Schlüsselwörtern (möglicherweise beschränkt auf "beliebte" Schlüsselwörter basierend auf der Worthäufigkeit, um die Liste überschaubar/relevant zu halten).
Sie können dann die JSON-generierten Schlüsselwörter für die clientseitige automatische Vervollständigung mit dem prefetch
von typeahead verwenden Funktion:
$('.mysearch .typeahead').typeahead({
name: 'mysearch',
prefetch: '/data/keywords.json'
});
typeahead.js
wird den prefetch
zwischenspeichern JSON-Daten in localStorage für clientseitige Suchen. Wenn das Suchformular gesendet wird, kann Ihre Anwendung die serverseitige MongoDB verwenden Textsuche
um die vollständigen Ergebnisse in der Reihenfolge ihrer Relevanz zurückzugeben.