2121log = None
2222
2323
24- def cache_key (query ):
24+ def cache_key (query , version = Config . DEFAULT_FLASK_VERSION ):
2525 """Make filesystem-friendly cache key"""
26- key = query
26+ key = query + "_" + version
2727 key = key .lower ()
2828 key = re .sub (r"[^a-z0-9-_;.]" , "-" , key )
2929 key = re .sub (r"-+" , "-" , key )
30- # log.debug("Cache key : {!r} -> {!r}".format(query, key))
30+ # log.debug("Cache key : {!r} {!r} -> {!r}".format(query, version , key))
3131 return key
3232
3333
@@ -41,9 +41,18 @@ def handle_result(api_dict):
4141 return result
4242
4343
44- def search (query = None , limit = Config .RESULT_COUNT ):
44+ def search (
45+ query = None , version = Config .DEFAULT_FLASK_VERSION , limit = Config .RESULT_COUNT
46+ ):
4547 if query :
46- results = index .search (query , {"page" : 0 , "hitsPerPage" : limit })
48+ results = index .search (
49+ query ,
50+ {
51+ "facetFilters" : ["version:{}" .format (version )],
52+ "page" : 0 ,
53+ "hitsPerPage" : limit ,
54+ },
55+ )
4756 if results is not None and "hits" in results :
4857 return results ["hits" ]
4958 return []
@@ -61,6 +70,10 @@ def main(wf):
6170
6271 query = wf .args [0 ].strip ()
6372
73+ # Tag prefix only. Treat as blank query
74+ if query == "v" :
75+ query = ""
76+
6477 if not query :
6578 wf .add_item ("Search the Flask docs..." )
6679 wf .send_feedback ()
@@ -69,16 +82,26 @@ def main(wf):
6982 # Parse query into query string and tags
7083 words = query .split (" " )
7184
72- query = " " .join (words )
85+ query = []
86+ version = Config .DEFAULT_FLASK_VERSION
87+
88+ for word in words :
89+ if word .replace ("v" , "" ) in Config .SUPPORTED_FLASK_VERSIONS :
90+ version = word .replace ("v" , "" )
91+ else :
92+ query .append (word )
93+
94+ query = " " .join (query )
7395
74- log .debug ("query : {!r}" .format (query ))
96+ # log.debug("version: {!r}".format(version))
97+ # log.debug("query: {!r}".format(query))
7598
76- key = cache_key (query )
99+ key = cache_key (query , version )
77100
78101 results = [
79102 handle_result (result )
80103 for result in wf .cached_data (
81- key , functools .partial (search , query ), max_age = Config .CACHE_MAX_AGE
104+ key , functools .partial (search , query , version ), max_age = Config .CACHE_MAX_AGE
82105 )
83106 ]
84107
0 commit comments