sql >> Database >  >> NoSQL >> MongoDB

Hoe werkt MongoDB $text zoeken?

MongoDB tekst zoeken maakt gebruik van de Snowball stambibliotheek om woorden te reduceren tot een verwachte stamvorm (of stam ) op basis van gemeenschappelijke taalregels. Algoritmische stammen zorgen voor een snelle reductie, maar talen hebben uitzonderingen (zoals onregelmatige of tegenstrijdige werkwoordvervoegingspatronen) die de nauwkeurigheid kunnen beïnvloeden. De Sneeuwbal-introductie bevat een goed overzicht van enkele van de beperkingen van algoritmische stemming.

Jouw voorbeeld van walking komt voort uit walking en komt overeen zoals verwacht.

Uw voorbeeld van trekking stamt af van trekk komt dus niet overeen met uw zoekwoord trek .

U kunt dit bevestigen door uw vraag uit te leggen en de parsedTextQuery . te bekijken informatie die de gebruikte zoektermen laat zien:

db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
​   "terms" : [
​       "trekk"
​   ],
​   "negatedTerms" : [ ],
​   "phrases" : [ ],
​   "negatedPhrases" : [ ]
}

U kunt ook de verwachte sneeuwbaleffecten controleren met behulp van de online Sneeuwbaldemo of door een Snowball-bibliotheek te vinden voor uw favoriete programmeertaal.

Om uitzonderingen te omzeilen die vaak van invloed kunnen zijn op uw gebruiksscenario, kunt u overwegen een ander veld aan uw tekstindex toe te voegen met trefwoorden om de zoekresultaten te beïnvloeden. Voor dit voorbeeld zou je trek . toevoegen als een trefwoord zodat het evenement beschreven als trekking komt ook overeen in uw zoekresultaten.

Er zijn andere benaderingen voor nauwkeurigere verbuiging die over het algemeen worden aangeduid als lemmatisatie . Lemmatiseringsalgoritmen zijn complexer en gaan naar het domein van natuurlijke taalverwerking . Er zijn veel open source (en commerciële) toolkits die u wellicht kunt gebruiken als u geavanceerdere tekstzoekopdrachten in uw toepassing wilt implementeren, maar deze vallen buiten het huidige bereik van de MongoDB-tekstzoekfunctie.




  1. Hoe het percentiel te berekenen?

  2. Een specifiek element in een array bijwerken met MongoDB / Meteor

  3. Hoe mongoDB ISODate naar string in mongoDB te converteren?

  4. MongoDB Query, sorteer en neem het nde document voor groep