Saad0KH commited on
Commit
307d4d7
·
verified ·
1 Parent(s): c6bd289

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -0
app.py CHANGED
@@ -60,6 +60,41 @@ def search_query():
60
  except Exception as e:
61
  return jsonify({"error": str(e)}), 500
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
  if __name__ == "__main__":
65
  app.run(host="0.0.0.0",debug=True, port=7860)
 
60
  except Exception as e:
61
  return jsonify({"error": str(e)}), 500
62
 
63
+ @app.route("/search-multi", methods=["POST"])
64
+ def search_multi_query():
65
+ """
66
+ Recherche avec une liste de queries (multi-query) pour style / contexte.
67
+ """
68
+ data = request.json
69
+ queries = data.get("queries") # ATTENTION : maintenant on attend une liste
70
+ collection_name = data.get("collectionName")
71
+ metadata = data.get("metadata")
72
+ n_results = data.get("nResults", 10)
73
+
74
+ if not queries or not isinstance(queries, list):
75
+ return jsonify({"error": "Le champ 'queries' doit être une liste de chaînes"}), 400
76
+
77
+ try:
78
+ all_results = []
79
+ for query in queries:
80
+ results = search(collection_name, query, metadata, n_results)
81
+ all_results.extend(results)
82
+
83
+ # 🔥 Fusion et tri par score décroissant
84
+ # si plusieurs résultats avec le même id, garder le max score
85
+ merged = {}
86
+ for r in all_results:
87
+ if r["id"] not in merged or r["score"] > merged[r["id"]]["score"]:
88
+ merged[r["id"]] = r
89
+
90
+ final_results = sorted(merged.values(), key=lambda x: x["score"], reverse=True)
91
+
92
+ return jsonify({"results": final_results[:n_results]}), 200
93
+
94
+ except Exception as e:
95
+ return jsonify({"error": str(e)}), 500
96
+
97
+
98
 
99
  if __name__ == "__main__":
100
  app.run(host="0.0.0.0",debug=True, port=7860)