sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB fulltextsökning + lösning för partiell ordmatchning

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.



  1. Mongo - möjligt i fråga att projicera underfält till toppnivå?

  2. Inga resultat med textsökning MongoDB PHP

  3. Hur frågar man trädstrukturen rekursivt med MongoDB?

  4. Redis, lyssna på pubsub-evenemang och förvandla dem till en stream för mer tillförlitlig konsumtion