繁体   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