Robím fulltextové vyhľadávanie, ktoré vyžaduje frázy OR slovo (a).
Podľa dokumentácia:
Ak hľadaný reťazec $ obsahuje frázu ajednotlivé výrazy, textové vyhľadávanie sa bude zhodovať iba s dokumentmi, ktoré obsahujú frázu. Presnejšie povedané, vyhľadávanie vykonáva logické AND frázy s jednotlivými výrazmi vo vyhľadávacom reťazci.
Napríklad prešiel vyhľadávací reťazec $:
""ssl certificate" authority key"
Operátor $ text hľadá frázu „ssl certificate“ a („autorita“ alebo „kľúč“ alebo „ssl“ alebo „osvedčenie“).
Je to možné urobiť natívne prostredníctvom MongoDB? Jediným iným spôsobom, ktorý vidím teraz, je použitie elastického vyhľadávania navrchu.
Aktualizácia - nasledujúce vyhľadávanie nefunguje a spôsobí a BadValue Too many text expressions
chyba:
{
$or: [{
$text: {
$search: ""ssl certificate""
}
}, {
$text: {
$search: "authority key"
}
}]
}
odpovede:
2 pre odpoveď č. 1Jediným spôsobom, ako to dosiahnuť natívne, je vykonanie viacerých dopytov - jeden pre každú frázu a jeden pre všetky samostatné slová spolu - a potom zlúčiť výsledky do aplikačnej vrstvy.
Ak je poradie relevantnosti pre váš prípad použitia dôležité, mať mongodb vám tiež text skóre a využite ich pri zlučovaní výsledkov.