MongoDB $text
zoekopdrachten ondersteunen geen gedeeltelijke matching. MongoDB staat tekstzoekopdrachten toe op tekenreeksinhoud met ondersteuning voor ongevoeligheid voor hoofdletters, scheidingstekens, stopwoorden en stemming. En de termen in uw zoekreeks zijn standaard OR'ed.
Uw (zeer nuttige :) voorbeelden één voor één bekijken:
EEN TERMIJN, GEDEELTELIJK
// 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\""}})
MEERDERE VOORWAARDEN, VOLLEDIG
// 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\""}})
MEERDERE VOORWAARDEN, EEN GEDEELTELIJKE
// 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\""}})
MEERDERE VOORWAARDEN, BEIDE GEDEELTELIJK
// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Houd er rekening mee dat de $search
tekenreeks is ...
Dus, als ten minste één term in uw $search
string overeenkomt, dan komt MongoDB overeen met dat document.
Om dit gedrag te verifiëren, moet u uw document wijzigen door Dr. Bob
naar DrBob
dan zullen de volgende vragen nee . opleveren documenten:
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Deze retourneren nu geen overeenkomsten omdat Dr
is niet langer een heel woord in uw tekstindex omdat het niet wordt gevolgd door de .
scheidingsteken.