Sprogstamming i tekstsøgning bruger en algoritme til at forsøge at relatere ord, der er afledt af en fælles base (f.eks. "løber" skal matche "løb"). Dette er forskelligt fra det præfiksmatch (f.eks. "blå" matcher "blåbær"), som du vil implementere for en autofuldførelsesfunktion.
For at bruge typeahead.js
mest effektivt med MongoDB-tekstsøgning vil jeg foreslå at fokusere på prefetch
understøttelse i typeahead:
-
Opret et
keywords
samling, som har de almindelige ord (måske med brugsfrekvensantal), der bruges i din samling. Du kan oprette denne samling ved at køre et kort/reducere på tværs af samlingen har du tekstsøgningsindekset på, og hold ordlisten opdateret ved hjælp af en periodisk Inkrementel kort/reducer efterhånden som nye dokumenter tilføjes. -
Få din applikation til at generere et JSON-dokument fra
keywords
samling med de unikke søgeord (måske begrænset til "populære" søgeord baseret på ordfrekvens for at holde listen overskuelig/relevant).
Du kan derefter bruge de genererede søgeord JSON til autofuldførelse på klientsiden med typeaheads prefetch
funktion:
$('.mysearch .typeahead').typeahead({
name: 'mysearch',
prefetch: '/data/keywords.json'
});
typeahead.js
vil cache prefetch
JSON-data i localStorage til søgninger på klientsiden. Når søgeformularen er indsendt, kan din ansøgning bruge serversiden MongoDB tekstsøgning
for at returnere de fulde resultater i relevant rækkefølge.