sql >> Databáze >  >> NoSQL >> MongoDB

Může $textové vyhledávání provést částečnou shodu

MongoDB $text vyhledávání nepodporují částečnou shodu. MongoDB umožňuje textové vyhledávací dotazy na obsah řetězce s podporou rozlišení malých a velkých písmen, oddělovačů, stop slov a stemming. A výrazy ve vašem vyhledávacím řetězci jsou ve výchozím nastavení OR.

Vezměte své (velmi užitečné :) příklady jeden po druhém:

JEDNODOBA, ČÁSTEČNÉ

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

VÍCE TERMÍNŮ, ÚPLNÉ

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

VÍCE PODMÍNEK, JEDNA ČÁSTEČNÁ

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

VÍCE PODMÍNEK, OBA ČÁSTEČNÉ

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

Mějte na paměti, že $search řetězec je ...

Pokud tedy máte alespoň jeden výraz ve vašem $search řetězec odpovídá, pak MongoDB odpovídá tomuto dokumentu.

Chcete-li toto chování ověřit, pokud upravíte svůj dokument změnou Dr. Bob na DrBob pak následující dotazy vrátí ne dokumenty:

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

Tyto nyní nevrací žádné shody, protože Dr již není celé slovo ve vašem textovém indexu, protože za ním nenásleduje . oddělovač.



  1. Výpis transakcí a sledování v Redis

  2. Je třeba sečíst z hodnoty objektu pole v mongodb

  3. Mongo Shell se nemůže připojit k Azure CosmosDB

  4. Soubor Dropzone není plně zpracován při volání processFile(File)