Språkstämning i textsökning använder en algoritm för att försöka relatera ord som härrör från en gemensam bas (t.ex. "running" ska matcha "run"). Detta skiljer sig från prefixmatchningen (t.ex. "blå" matchar "blåbär") som du vill implementera för en autoslutförandefunktion.
För att mest effektivt använda typeahead.js
med MongoDB-textsökning skulle jag föreslå att du fokuserar på prefetch
stöd i typahead:
-
Skapa ett
keywords
samling som har de vanliga orden (kanske med användningsfrekvens) som används i din samling. Du kan skapa den här samlingen genom att köra en karta/förminska över hela samlingen har du textsökningsindexet på och håll ordlistan uppdaterad med en periodisk Inkrementell karta/minska när nya dokument läggs till. -
Låt din applikation generera ett JSON-dokument från
keywords
samling med de unika sökorden (kanske begränsad till "populära" sökord baserat på ordfrekvens för att hålla listan hanterbar/relevant).
Du kan sedan använda de genererade sökorden JSON för automatisk komplettering på klientsidan med typaheads prefetch
funktion:
$('.mysearch .typeahead').typeahead({
name: 'mysearch',
prefetch: '/data/keywords.json'
});
typeahead.js
cachelagrar prefetch
JSON-data i localStorage för sökningar på klientsidan. När sökformuläret har skickats kan din ansökan använda serversidan MongoDB textsökning
för att returnera de fullständiga resultaten i relevant ordning.