MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kann eine $text-Suche eine teilweise Übereinstimmung liefern

MongoDB $text Suchvorgänge unterstützen keine teilweise Übereinstimmung. MongoDB ermöglicht Textsuchabfragen für Zeichenfolgeninhalte mit Unterstützung für Groß- und Kleinschreibung, Trennzeichen, Stoppwörter und Wortstamm. Und die Begriffe in Ihrer Suchzeichenfolge sind standardmäßig ODER-verknüpft.

Nehmen Sie Ihre (sehr nützlichen :) Beispiele einzeln:

EINZELZEIT, TEILWEISE

// 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\""}})

MEHRERE BEDINGUNGEN, VOLLSTÄNDIG

// 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\""}})

MEHRERE BEDINGUNGEN, EINE TEILWEISE

// 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\""}})

MEHRERE BEDINGUNGEN, BEIDE TEILWEISE

// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})

Denken Sie daran, dass die $search Zeichenfolge ist ...

Wenn also mindestens ein Begriff in Ihrer $search string passt, dann passt MongoDB zu diesem Dokument.

Um dieses Verhalten zu überprüfen, wenn Sie Ihr Dokument bearbeiten und Dr. Bob an DrBob dann geben die folgenden Abfragen no zurück Dokumente:

db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})

Diese geben jetzt keine Übereinstimmungen zurück, weil Dr ist in Ihrem Textindex kein ganzes Wort mehr, da ihm nicht der . folgt Trennzeichen.