簡體   English   中英

Pymongo $文本搜索與多個過濾器

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM