docs: def find_documents(self, sentence, limit=None, must_sort=True,
                         search_type='fuzzy'):
          """
          Returns all the documents matching the given keywords
  
          Arguments:
              sentence --- a sentenced query
          Returns:
              An array of document (doc objects)
          """
          sentence = sentence.strip()
          sentence = strip_accents(sentence)
  
          if sentence == u"":
              return self.get_all_docs()
  
          result_list_list = []
          total_results = 0
  
          for query_parser in self.search_param_list[search_type]:
              query = query_parser["query_parser"].parse(sentence)
  
              sortedby = None
              if must_sort and "sortedby" in query_parser:
                  sortedby = query_parser['sortedby']
              if sortedby:
                  results = self.__searcher.search(
                      query, limit=limit, sortedby=sortedby
                  )
              else:
                  results = self.__searcher.search(
                      query, limit=limit
                  )
              results = [
                  (result['docid'], result['doctype'])
                  for result in results
              ]
  
              result_list_list.append(results)
              total_results += len(results)
  
              if not must_sort and total_results >= limit:
                  break
  
          # merging results
          docs = set()
          for result_intermediate in result_list_list:
              for result in result_intermediate:
                  doc = self._docs_by_id.get(result[0])
                  if doc is None:
                      continue
                  docs.add(doc)
  
          docs = [d for d in docs]
  
          if not must_sort and limit is not None:
              docs = docs[:limit]
  
          return docs