/ / MongoDB - $ textový operátor hľadá frázu ALEBO slovo (y) - mongodb, hľadať

MongoDB - $ text operator hľadaj frázu alebo slovo (y) - mongodb, hľadaj

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ď č. 1

Jediný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.