Existuje několik možností, které můžete použít s textovým vyhledáváním, aby vyhovovaly těmto potřebám. Zvažte následující dokumenty:
{ "text" : "cake" }
{ "text" : "sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale" }
{ "text" : "dress sale" }
{ "text" : "cake sale monday" }
Výchozí „seznam“ slov je nebo zahrnutí, ale pokud nechcete a včetně "citujete" slova:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\"" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
{ "text" : "cake sale monday" }
Pokud chcete vyloučit slovo pak předponu -
:
db.words.find( { "$text": { "$search": "\"cake\" \"sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
{ "text" : "sale cake" }
A pokud byste chtěli část toho jako přesnou frázi pak "ocitujete" celou frázi:
db.words.find( { "$text": { "$search": "\"cake sale\" -monday" } },{_id: 0})
{ "text" : "cake sale" }
Odvozování slov však má problém, takže :
db.words.find( { "$text": { "$search": "test -testing" } },{_id: 0})
Ve skutečnosti by nevrátil výsledek.
Podívejte se na dokumentaci k $text
operátora pro příklady. Momentálně tam nejsou všichni, ale zlepšuje se to.