[英]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.