Поиск текста в Mongodb не работает со строкой Flask - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь сделать текстовый поиск с помощью Flask.

Для одного слова это работает, но когда я передаю строку с несколькими словами, это не работает.

Но когда я передаюэта строка в жестком коде работает:

Предположим, что строка такая:

str = "SOME TEXT HERE"

, если я передаю ее как переменную следующим образом:

newText= ' '.join(r'\"'+word+r'\"' for word in str.split())
    result = app.data.driver.db[endpoint].find({"$text":{"$search":newText }}, {"score": {"$meta":"textScore"}}).sort([("score", {"$meta": "textScore"})])

это не такработа.

Но если я передам это так жестко, как это:

    result = app.data.driver.db[endpoint].find({"$text":{"$search":" \"SOME\" \"TEXT\" \"HERE\" " }}, {"score": {"$meta":"textScore"}}).sort([("score", {"$meta": "textScore"})])

Это работает.

1 Ответ

0 голосов
/ 05 декабря 2018

Содержимое переменной newText отличается от содержимого в вашей жестко закодированной строке.

Попробуйте удалить 'r' во время создания newText, чтобы сгенерировать строку, аналогичную жестко закодированной строке, следующим образом:

newText= ' '.join('\"'+word+'\"' for word in str.split())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...