def search(cls, expression, page, per_page): ids, total = search(cls.__tablename__, expression, page, per_page) if total == 0: return cls.query.filter_by(id=0), 0 when = [] for i in range(len(ids)): when.append((ids[i], i)) return cls.query.filter(cls.id.in_(ids)).order_by( db.case(when, value=cls.id)), total
def application_do_search_api(name): args = reqparse.RequestParser(). \ add_argument("fields", type=dict, required=True). \ add_argument("topk", type=int, required=True). \ add_argument("nprobe", type=int, required=False, default=16). \ parse_args() args = from_view_dict(args) return search(name, fields=args['fields'], topk=args['topk'], nprobe=args['nprobe'])