Skip to content

Commit eb53f46

Browse files
feat(Besoins): Filtre par type de structure dans le ciblage des structures par recherche sémantique (#1152)
1 parent 0672ca2 commit eb53f46

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

lemarche/siaes/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,7 @@ def elasticsearch_index_metadata(self):
11861186
"id": self.id,
11871187
"name": self.name,
11881188
"website": self.website if self.website else "",
1189+
"kind": self.kind,
11891190
}
11901191
if self.latitude and self.longitude:
11911192
metadata["geo_location"] = {

lemarche/tenders/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -719,9 +719,10 @@ def set_siae_found_list(self):
719719
geo_distance=self.distance_location,
720720
geo_lat=self.location.coords.y,
721721
geo_lon=self.location.coords.x,
722+
siae_kinds=self.siae_kind,
722723
)
723724
else:
724-
siae_ids = api_elasticsearch.siaes_similarity_search(self.description)
725+
siae_ids = api_elasticsearch.siaes_similarity_search(self.description, siae_kinds=self.siae_kind)
725726

726727
siaes_had_found_by_ia = Siae.objects.filter(id__in=siae_ids)
727728
siaes_had_found_by_ia_too = []

lemarche/utils/apis/api_elasticsearch.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
)
1313

1414

15-
def siaes_similarity_search(search_text: str, search_filter: dict = {}):
15+
def siaes_similarity_search(search_text: str, search_filter: list = [], siae_kinds: list = []):
1616
"""Performs semantic search with Elasticsearch as a vector db
1717
1818
Args:
@@ -21,6 +21,10 @@ def siaes_similarity_search(search_text: str, search_filter: dict = {}):
2121
Returns:
2222
list: list of siaes id that match the search query
2323
"""
24+
25+
if siae_kinds:
26+
search_filter.append({"terms": {"metadata.kind.keyword": siae_kinds}})
27+
2428
db = ElasticsearchStore(
2529
embedding=OpenAIEmbeddings(),
2630
es_user=settings.ELASTICSEARCH_USERNAME,
@@ -40,7 +44,7 @@ def siaes_similarity_search(search_text: str, search_filter: dict = {}):
4044

4145

4246
def siaes_similarity_search_with_geo_distance(
43-
search_text: str, geo_distance: int = None, geo_lat: float = None, geo_lon: float = None
47+
search_text: str, geo_distance: int = None, geo_lat: float = None, geo_lon: float = None, siae_kinds: list = []
4448
):
4549
search_filter = []
4650
if geo_distance and geo_lat and geo_lon:
@@ -56,10 +60,10 @@ def siaes_similarity_search_with_geo_distance(
5660
}
5761
]
5862

59-
return siaes_similarity_search(search_text, search_filter)
63+
return siaes_similarity_search(search_text, search_filter, siae_kinds)
6064

6165

62-
def siaes_similarity_search_with_city(search_text: str, city: Perimeter):
66+
def siaes_similarity_search_with_city(search_text: str, city: Perimeter, siae_kinds: list = []):
6367
search_filter = [
6468
{
6569
"bool": {
@@ -88,4 +92,4 @@ def siaes_similarity_search_with_city(search_text: str, city: Perimeter):
8892
}
8993
}
9094
]
91-
return siaes_similarity_search(search_text, search_filter)
95+
return siaes_similarity_search(search_text, search_filter, siae_kinds)

0 commit comments

Comments
 (0)