Taalafstemming in tekst zoeken gebruikt een algoritme om woorden te relateren die zijn afgeleid van een gemeenschappelijke basis (bijv. "running" moet overeenkomen met "run"). Dit verschilt van de prefix-overeenkomst (bijv. "blauw" die overeenkomt met "blueberry") die u wilt implementeren voor een functie voor automatisch aanvullen.
Om typeahead.js
het meest effectief te gebruiken met MongoDB tekst zoeken zou ik willen voorstellen om te focussen op de prefetch
ondersteuning bij typeahead:
-
Maak een
keywords
verzameling die de gebruikelijke woorden (misschien met gebruiksfrequentietelling) heeft die in uw verzameling worden gebruikt. U kunt deze verzameling maken door een Map/Reduce uit te voeren in de hele collectie waarop u de tekstzoekindex hebt, en houd de woordenlijst up-to-date met behulp van een periodieke Incremental Map/Reduce wanneer nieuwe documenten worden toegevoegd. -
Laat uw applicatie een JSON-document genereren op basis van de
keywords
verzameling met de unieke zoekwoorden (misschien beperkt tot 'populaire' zoekwoorden op basis van woordfrequentie om de lijst overzichtelijk/relevant te houden).
U kunt vervolgens de gegenereerde JSON-zoekwoorden gebruiken voor automatisch aanvullen aan de clientzijde met prefetch
van typeahead functie:
$('.mysearch .typeahead').typeahead({
name: 'mysearch',
prefetch: '/data/keywords.json'
});
typeahead.js
slaat de prefetch
in de cache op JSON-gegevens in localStorage voor zoekopdrachten aan de clientzijde. Wanneer het zoekformulier is ingediend, kan uw aanvraag de server-side MongoDB gebruiken tekst zoeken
om de volledige resultaten in volgorde van relevantie te retourneren.