MongoDB - specifikovat konkrétní pole v $text search

MongoDB - specifikovat konkrétní pole v $text search
« kdy: 29. 05. 2020, 11:06:56 »
Zdravím, nikde na webu jsem nenašel opověď, respektive, našel jsem odpovědi, že to nejde, nebo že to jde jen přes ElestacSearch. Nicméně protože s MongoDB teprve začínám, napadlo mě, že se zeptám i tady.
Takže: dejme tomu, že máme něco jako slovník, tedy pole "eng" a pole "cze", vypadá to nějak takto:
Kód: [Vybrat]
{''eng': 'nějaký text', 'cze': 'nějaký jiný text'}a těch rádků je samozřejmě mraky.
Podle manuálu k MongoDB, tak nemůžu vytvořit více $text indexů, ale můžu vytvořit index, který pokrývá více polí (v mém případě tedy "eng" i "cze"), třeba nějak takto:
Kód: [Vybrat]
create_index([('eng', 'text'), ('cze', 'text')])Jenže já pak neumím vyhledávat pouze a jenom v poli "eng" a nebo pouze a jenom v poli "cze", vyhledávám prostě v celém $text indexu, třeba takhle:
Kód: [Vybrat]
find({ "$text": { "$search": "something" } } )Pokud ten $text index pustím jen na pole "eng" a nebo jen na pole "cze", tak jsou ty výsledky fakt božsky srovnané, nemusím používat ani nějaké speciální metascore sorting, prostě je to automaticky srovnané podle nejlepší shody a opravdu parádně to funguje. Ale já bych rád, aby to takto fungovalo jak pro pole "eng", tak pro "cze", tedy aby jednou vyhledával pouze češtinu a jednou pouze angličtinu (nikoliv najednou).
Napadlo mě pouze, že bych udělal dvě stejné databáze a v každé bych indexoval jeden field, ale to mi přijde na houby.
Opravdu s MongoDB začínám, takže se omlouvám, pokud je dotaz nějak mimo, ale fakt by se mi hodila rada. Díky za každou relevantní odpověď.

Jiří
« Poslední změna: 29. 05. 2020, 11:10:06 od Jiří Něměc »