code: def search():
      
      pattern = flask.request.args.get('pattern', "*").strip().lower()
  
      # if the pattern contains "in:<collection>" (eg: in:builtin),
      # filter results to only that (or those) collections
      # This was kind-of hacked together, but seems to work well enough
      collections = [c["name"].lower() for c in current_app.kwdb.get_collections()]
      words = []
      filters = []
      if pattern.startswith("name:"):
          pattern = pattern[5:].strip()
          mode = "name"
      else:
          mode="both"
  
      for word in pattern.split(" "):
          if word.lower().startswith("in:"):
              filters.extend([name for name in collections if name.startswith(word[3:])])
          else:
              words.append(word)
      pattern = " ".join(words)
  
      keywords = []
      for keyword in current_app.kwdb.search(pattern, mode):
          kw = list(keyword)
          collection_id = kw[0]
          collection_name = kw[1].lower()
          if len(filters) == 0 or collection_name in filters:
              url = flask.url_for(".doc_for_library", collection_id=kw[0], keyword=kw[2])
              row_id = "row-%s.%s" % (keyword[1].lower(), keyword[2].lower().replace(" ","-"))
              keywords.append({"collection_id": keyword[0],
                               "collection_name": keyword[1],
                               "name": keyword[2],
                               "synopsis": keyword[3],
                               "version": __version__,
                               "url": url,
                               "row_id": row_id
                           })
  
      keywords.sort(key=lambda kw: kw["name"])
      return flask.render_template("search.html",
                                   data={"keywords": keywords,
                                         "version": __version__,
                                         "pattern": pattern
                                     })
docs: Show all keywords that match a pattern