sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB fuldtekstsøgning + løsning for delvis ordmatch

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.



  1. Introduktion til Redis Cluster Sharding – fordele, begrænsninger, implementering og klientforbindelser

  2. Mongoose:skal et brugerdefineret _id erklæres som et indeks og være unikt

  3. Transaktionstilstanden kunne ikke fortsætte, fordi sessionstransaktionsindsamlingen mangler

  4. Gem billeder i en MongoDB-database