MongoDB $text
søgninger understøtter ikke delvis matchning. MongoDB tillader tekstsøgningsforespørgsler på strengindhold med understøttelse af ufølsomhed for store og små bogstaver, afgrænsninger, stopord og ordstamming. Og termerne i din søgestreng er som standard ELLER-redigeret.
Tager dine (meget nyttige :) eksempler ét efter ét:
ENKELT TERM, DELVIS
// returns nothing because there is no world word with the value `Crai` in your
// text index and there is no whole word for which `Crai` is a recognised stem
db.submissions.find({"$text":{"$search":"\"Crai\""}})
FLERE VILKÅR, FULDT
// returns the document because it contains all of these words
// note in the text index Dr. Bob is not a single entry since "." is a delimiter
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
FLERE VILKÅR, EN DELVIS
// returns the document because it contains the whole word "Craig" and it
// contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
FLERE VILKÅR, BEGGE DELVIS
// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Husk, at $search
streng er ...
Så hvis mindst ét udtryk i din $search
streng matcher, så matcher MongoDB det dokument.
For at bekræfte denne adfærd, hvis du redigerer dit dokument ved at ændre Dr. Bob
til DrBob
så vil følgende forespørgsler returnere nej dokumenter:
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Disse returnerer nu ingen resultater, fordi Dr
er ikke længere et helt ord i dit tekstindeks, fordi det ikke efterfølges af .
afgrænsning.