diff --git a/search_app_ui/streamlit_app.py b/search_app_ui/streamlit_app.py index 2e249ba..db8cb41 100644 --- a/search_app_ui/streamlit_app.py +++ b/search_app_ui/streamlit_app.py @@ -136,8 +136,6 @@ st.title('Recherche dans tes contenus publiés sur le web') collections = client.collections.retrieve() total_documents = sum(collection['num_documents'] for collection in collections) -st.write(f"Total documents indexés: {total_documents}") - # Champ de recherche requete = st.text_input('Entrez votre requête de recherche') @@ -146,15 +144,14 @@ col1, col2 = st.columns(2) date_debut = col1.date_input('Date de début', value=datetime.now() - pd.DateOffset(years=1)) date_fin = col2.date_input('Date de fin', value=datetime.now()) -# Filtre de réseau social +# Filtre de réseau social et de langue +col3, col4 = st.columns(2) reseaux = get_networks() -reseaux_selectionnes = st.multiselect('Sélectionnez les réseaux sociaux', reseaux, +reseaux_selectionnes = col3.multiselect('Sélectionnez les réseaux sociaux', reseaux, default=reseaux[0] if reseaux else None) - -# Filtre de langue langues = [('fr', 'Français'), ('en', 'English')] -langue_selectionnees = st.multiselect('Sélectionnez la langue', +langue_selectionnees = col4.multiselect('Sélectionnez la langue', options=[label for code, label in langues], format_func=lambda x: x, default='Français') @@ -162,6 +159,9 @@ langue_selectionnees = st.multiselect('Sélectionnez la langue', # Convertir les étiquettes en codes de langage selected_lang_codes = [code for code, label in langues if label in langue_selectionnees] +# Filtre sur le nombre de mots +nombre_mots = st.slider('Nombre de mots minimum', min_value=0, max_value=1000, value=100, step=10) + if st.button('Rechercher'): # Préparer les filtres debut_datetime = datetime.combine(date_debut, time.min) @@ -169,15 +169,16 @@ if st.button('Rechercher'): filtre_date = f"creation_timestamp:[{int(debut_datetime.timestamp())}..{int(fin_datetime.timestamp())}]" filtre_reseau = f"network:[{' '.join(reseaux_selectionnes)}]" if reseaux_selectionnes else None filtre_langue = f"langue:[{' '.join(selected_lang_codes)}]" if selected_lang_codes else None + filtre_mots = f"nombre_de_mots:[{nombre_mots}..10000]" if nombre_mots > 0 else None - filtres = ' && '.join(filter(None, [filtre_date, filtre_reseau, filtre_langue])) + filtres = ' && '.join(filter(None, [filtre_date, filtre_reseau, filtre_langue, filtre_mots])) # Effectuer la recherche pour tous les résultats tous_resultats = rechercher_documents(requete, ces_filtres=filtres, facette_par='network') nombre_total_resultats = tous_resultats['found'] # Afficher le nombre total de résultats - st.subheader(f"Trouvé {nombre_total_resultats} résultats") + st.subheader(f"Trouvé {nombre_total_resultats} résultats parmi {total_documents } documents indexés") # Affichage des résultats (100 maximum) st.subheader("Résultats de la recherche") @@ -189,7 +190,9 @@ if st.button('Rechercher'): st.markdown(f"**{hit['document']['network']}**") st.markdown( f"**{datetime.fromtimestamp(hit['document']['creation_timestamp']).strftime('%Y-%m-%d %H:%M:%S')}**") - + st.markdown(f"**{hit['document']['nombre_de_mots']} mots**") + # Score + st.markdown(f"**Score: {hit["hybrid_search_info"]['rank_fusion_score']}**") # Étiquettes de couleur pour les facettes st.markdown(f"""