我正在尝试使用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"})])
它有效。
变量newText
的内容与硬编码字符串中的内容不同。
尝试在创建newText
期间删除"r",以生成类似于硬编码字符串的字符串,如下所示:
newText= ' '.join('"'+word+'"' for word in str.split())