Améliorations au moteur de recherche
This commit is contained in:
parent
fc6bd9f255
commit
4c68b473e1
1 changed files with 13 additions and 10 deletions
|
@ -136,8 +136,6 @@ st.title('Recherche dans tes contenus publiés sur le web')
|
||||||
collections = client.collections.retrieve()
|
collections = client.collections.retrieve()
|
||||||
total_documents = sum(collection['num_documents'] for collection in collections)
|
total_documents = sum(collection['num_documents'] for collection in collections)
|
||||||
|
|
||||||
st.write(f"Total documents indexés: {total_documents}")
|
|
||||||
|
|
||||||
# Champ de recherche
|
# Champ de recherche
|
||||||
requete = st.text_input('Entrez votre requête 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_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())
|
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 = 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)
|
default=reseaux[0] if reseaux else None)
|
||||||
|
|
||||||
# Filtre de langue
|
|
||||||
langues = [('fr', 'Français'), ('en', 'English')]
|
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],
|
options=[label for code, label in langues],
|
||||||
format_func=lambda x: x,
|
format_func=lambda x: x,
|
||||||
default='Français')
|
default='Français')
|
||||||
|
@ -162,6 +159,9 @@ langue_selectionnees = st.multiselect('Sélectionnez la langue',
|
||||||
# Convertir les étiquettes en codes de langage
|
# Convertir les étiquettes en codes de langage
|
||||||
selected_lang_codes = [code for code, label in langues if label in langue_selectionnees]
|
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'):
|
if st.button('Rechercher'):
|
||||||
# Préparer les filtres
|
# Préparer les filtres
|
||||||
debut_datetime = datetime.combine(date_debut, time.min)
|
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_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_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_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
|
# Effectuer la recherche pour tous les résultats
|
||||||
tous_resultats = rechercher_documents(requete, ces_filtres=filtres, facette_par='network')
|
tous_resultats = rechercher_documents(requete, ces_filtres=filtres, facette_par='network')
|
||||||
nombre_total_resultats = tous_resultats['found']
|
nombre_total_resultats = tous_resultats['found']
|
||||||
|
|
||||||
# Afficher le nombre total de résultats
|
# 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)
|
# Affichage des résultats (100 maximum)
|
||||||
st.subheader("Résultats de la recherche")
|
st.subheader("Résultats de la recherche")
|
||||||
|
@ -189,7 +190,9 @@ if st.button('Rechercher'):
|
||||||
st.markdown(f"**{hit['document']['network']}**")
|
st.markdown(f"**{hit['document']['network']}**")
|
||||||
st.markdown(
|
st.markdown(
|
||||||
f"**{datetime.fromtimestamp(hit['document']['creation_timestamp']).strftime('%Y-%m-%d %H:%M:%S')}**")
|
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
|
# Étiquettes de couleur pour les facettes
|
||||||
st.markdown(f"""
|
st.markdown(f"""
|
||||||
<span style="background-color: #007bff; color: white; padding: 2px 6px; border-radius: 10px;">
|
<span style="background-color: #007bff; color: white; padding: 2px 6px; border-radius: 10px;">
|
||||||
|
|
Loading…
Reference in a new issue