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

Hvordan fungerer MongoDB $text-søgning?

MongoDB-tekstsøgning bruger Snowball-stammebiblioteket at reducere ord til en forventet rodform (eller stamme ) baseret på fælles sprogregler. Algoritmisk ordstamming giver en hurtig reduktion, men sprog har undtagelser (såsom uregelmæssige eller modstridende verbøjningsmønstre), der kan påvirke nøjagtigheden. Snowball-introduktionen indeholder et godt overblik over nogle af begrænsningerne ved algoritmisk stemming.

Dit eksempel på walking stammer fra walking og matcher som forventet.

Men dit eksempel på trekking stammer fra trekk så matcher ikke dit søgeord for trek .

Du kan bekræfte dette ved at forklare din forespørgsel og gennemgå parsedTextQuery information, der viser de anvendte stammende søgetermer:

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

Du kan også tjekke den forventede sneboldafgang ved at bruge online Snebolddemoen eller ved at finde et Snowball-bibliotek til dit foretrukne programmeringssprog.

For at omgå undtagelser, der ofte kan påvirke din use case, kan du overveje at tilføje et andet felt til dit tekstindeks med nøgleord for at påvirke søgeresultaterne. Til dette eksempel vil du tilføje trek som et nøgleord, så begivenheden beskrives som trekking matcher også i dine søgeresultater.

Der er andre tilgange til mere præcis bøjning, som generelt omtales som lemmatisering . Lemmatiseringsalgoritmer er mere komplekse og begynder at gå ind i domænet for naturlig sprogbehandling . Der er mange open source (og kommercielle) værktøjssæt, som du muligvis kan bruge, hvis du vil implementere mere avanceret tekstsøgning i din applikation, men disse er uden for det nuværende omfang af MongoDB-tekstsøgefunktionen.




  1. TypeError:ObjectId('') kan ikke JSON serialiseres

  2. Spark HBase Connector – Et års gennemgang

  3. Argumenter, der sendes ind, skal være en enkelt streng på 12 bytes

  4. klasser og grænseflader til at skrive maskinskrevne modeller og skemaer af Mongoose i Typescript ved hjælp af definitivttyped