[英]Pymongo $text search with multiple filter
我正在使用 Pymongo 进行多重搜索,我想使用各种关键字来搜索它们,但它不起作用。
我的查询在这里:
(这将显示所有“ABC”和“JKL”结果,但我只想搜索包含“ABC”和“JKL”的结果。
# multiple search (one ADD one , show all one, and two keyword results)
searchQuery = {
'$text': {
'$search': "ABC JKL",
}}
我也试过这个,但它说“文字表达太多”
searchQuery = {
"$and":[
{'$text': {'$search': 'ABC'}},
{'$text': {'$search': 'JKL'}},
]}
解决并在这里找到答案:
MongoDB 文本搜索和多个搜索词
最后,我的解决方案在这里
(以 Flask 为例)
# multiple filter
@app.route("/multisearch", methods=["GET"])
def post_multisearch():
if request.method =="GET":
# Get parameter from URL (/multisearch?tags=ABC%20JKL)
# %20 equal space
getUrlQuery = request.args.get('tags', type=str ,default='')
# print(getUrlQuery) # "ABC JKL"
getUrlArray =getUrlQuery.split(" ")
# print(getUrlArray) # ["ABC","JKL"]
keywordArray =[]
# Text search "include" expression \"Keyword\"
for i in getUrlArray:
keywordArray.append(f"\"{i}\"")
# For loop in search query
searchQuery = {
'$text': {'$search': str([ele for ele in keywordArray])},
}
searchResults = list(post_collection.find(searchQuery))
json_data = dumps(searchResults, indent = 4)
return json_data
参考这里:
MongoDB 文本搜索和多个搜索词
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.