Documentation Frappe Framework

Frappe Framework

Recherche

La recherche plein texte passe par une classe qui étend FullTextSearch. Elle décrit le schéma, les documents à indexer et la lecture du résultat.

2 min de lectureMis à jour le Source : docs.frappe.io

La recherche est gérée par le module Search de Frappe, une enveloppe de Whoosh. On étend FullTextSearch pour un besoin précis. WebsiteSearch indexe les pages publiques et expose une recherche.

Les méthodes d’index et de recherche sont détaillées dans API FullTextSearch.

Une instance

Chaque instance porte un schéma défini par la classe : une implémentation a donc son propre schéma. On en crée une autre pour indexer autrement. La classe fournit aussi de quoi créer, mettre à jour et interroger l’index.

À l’initialisation, un nom d’index est obligatoire. Sont alors préparés :

AttributOrigine
index_nameNom fourni
index_pathChemin de l’index dans le dossier des sites
schemaRetour de get_schema
idIdentifiant du document dans l’index

build appelle get_items_to_index. Les documents sont une liste de frappe._dict conformes au schéma. Ils sont ajoutés à l’index, puis écrits dans le fichier. search interroge cet index.

Exemple Blog

BlogWrapper redéfinit trois méthodes. Le schéma par défaut commenté dans la source est name (ID stocké) et content (TEXT stocké). get_id renverrait "name".

get_items_to_index parcourt les blogs et accumule get_document_to_index. Cette méthode charge le Blog Post et renvoie un dictionnaire name et content. parse_result renvoie result["name"].

La source précise aussi le sens général de ces méthodes pour les pages : get_items_to_index obtient les routes, y compris les pages statiques de www/ et les routes des documents publiés ; get_document_to_index rend une page et l’analyse avec BeautifulSoup ; parse_result transforme chaque résultat.

Point d’attention

L’exemple blog renvoie le contenu brut du document, alors que le commentaire général parle d’un rendu HTML analysé par BeautifulSoup. Le schéma commenté n’est pas réécrit dans la classe : sans get_schema, le schéma par défaut de la classe de base s’applique, tel que le commentaire le montre.

Recherche plein texte Frappe avec Whoosh | ERPNext Lab