Un simple nœud de travail qui explore les plans de site afin de maintenir un index Algolia à jour.
Il utilise de simples sélecteurs CSS afin de trouver le contenu textuel réel à indexer.
Cette application utilise la bibliothèque d'Algolia.
Ce script doit être exécuté via crontab afin d'explorer l'intégralité du site Web à intervalles réguliers.
<loc>
, c'est-à-dire urlset/url/loc
.npm i algolia-webcrawler -g
git clone [email protected]:DeuxHuitHuit/algolia-webcrawler.git
git clone https://github.com/DeuxHuitHuit/algolia-webcrawler.git
algolia-webcrawler --config config.json
cd à la racine du projet et exécutez node app
.
La configuration se fait via le fichier config.json.
Vous pouvez choisir un fichier config.json stocké ailleurs en utilisant l'indicateur --config.
node app --config my-config.json
Au strict minimum, vous pouvez modifier config.json pour définir des valeurs sur les options suivantes : "app", "cred", "indexname" et au moins un objet "sitemap". Si vous disposez de plusieurs plans de site, veuillez tous les lister : les sous-plans de site ne seront pas explorés.
La plupart des options sont obligatoires. Aucune valeur par défaut n'est fournie, sauf indication contraire.
Le nom de votre application.
Objet d’informations d’identification Algolia. Voir « cred.appid » et « cred.apikey ».
Votre identifiant d'application Algolia.
Votre clé API Algolia générée.
Délai simple entre chaque requête effectuée sur le site en millisecondes.
Le nombre maximum de millisecondes pendant lesquelles une entrée peut vivre sans être mise à jour. Après chaque exécution, l'application recherchera les anciennes entrées et les supprimera. Si vous ne souhaitez pas vous débarrasser des anciennes entrées, définissez cette valeur sur 0.
Une chaîne de filtre qui sera appliquée lors de la suppression des anciennes entrées. Utile lorsque vous souhaitez conserver d'anciens enregistrements qui ne seront pas mis à jour. Seuls les enregistrements anciens et correspondant au filtre seront supprimés.
La taille maximale en octets d'un enregistrement à envoyer à Algolia. La valeur par défaut est de 10 000 mais peut varier en fonction des différents forfaits.
Lorsque l'enregistrement est trop volumineux (en fonction de maxRecordSize), le robot supprime les valeurs de la clé de texte. Utilisez cet attribut pour configurer quelles clés doivent être élaguées lorsque l'enregistrement est trop volumineux.
Un objet contenant diverses valeurs liées à votre index.
Votre nom d'index.
Un objet qui servira d'argument à la méthode Index#setSetting
d'Algolia.
Veuillez lire la documentation d'Algolia à ce sujet. Tout attribut valide documenté pour cette méthode peut être utilisé.
Un tableau de chaînes qui définit quels attributs sont indexables, ce qui signifie qu'une recherche en texte intégral sera effectuée sur eux. Pour une liste complète des attributs possibles, consultez la section Objet stocké.
Un tableau de chaînes qui définit les attributs filtrables, ce qui signifie que vous pouvez les utiliser pour exclure certains enregistrements du renvoi. Pour une liste complète des attributs possibles, consultez la section Objet stocké.
Ce tableau doit contenir une liste d'objets de plan de site.
Un plan de site est un objet très simple avec deux propriétés String : url et lang. La propriété 'url' est l'URL exacte de ce plan de site. La propriété 'lang' doit expliciter la langue principale utilisée par l'URL trouvée dans le plan du site.
Un objet contenant différentes options http.
La chaîne d'authentification, sous la forme username:password
du nœud. Si vous n'avez pas besoin d'authentification, vous devez toujours spécifier une chaîne vide.
Un objet contenant des sélecteurs CSS afin de retrouver le contenu des pages html.
Sélecteur CSS pour le titre de la page.
Sélecteur CSS pour la description de la page.
Sélecteur CSS pour l'image de la page.
Sélecteur CSS pour le titre de la page.
Sélecteur CSS pour la propriété "key". Vous pouvez ajouter des clés personnalisées à votre guise.
Les sélecteurs peuvent également être définis en utilisant la forme longue (c'est-à-dire en tant qu'objet), ce qui permet d'y spécifier des propriétés personnalisées.
Nom des attributs pour rechercher des valeurs. La valeur par défaut est ['content', 'value'].
Le véritable sélecteur CSS à utiliser.
Le nombre maximum de nœuds à vérifier.
Un objet contenant des sélecteurs CSS pour rechercher les éléments qui ne doivent pas être indexés. Ces sélecteurs CSS correspondent à chaque nœud et sont vérifiés par rapport à tous leurs parents pour s'assurer qu'aucun de ses parents n'est exclu.
Sélecteur CSS d'éléments exclus pour le texte de la page.
Sélecteur CSS d'éléments exclus pour la propriété "key". La clé doit correspondre à celle utilisée dans les sélecteurs[clé].
Un objet contenant une chaîne de formateur. Leurs valeurs sont supprimées du résultat original obtenu avec le sélecteur CSS associé.
La chaîne à supprimer du titre de la page. Peut également être un tableau de chaînes.
Chaîne à supprimer de la clé spécifiée. Peut également être un tableau de chaînes.
La fonction d'analyse utilisée pour formater la valeur. Les types pris en charge sont « entier », « float », « booléen » et « json ».
La valeur par défaut insérée pour la clé spécifiée. Sera défini si la valeur est fausse.
Une liste de fichiers javascript pour charger du code personnalisé avant de sauvegarder l'enregistrement. La seule exigence est d'implémenter l'interface suivante, où record
est l'objet à enregistrer et data est le code HTML.
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
Toutes les URL sont vérifiées par rapport à tous les éléments de la liste noire. Si l'URL complète ou son composant de chemin figure dans la liste noire, elle ne sera pas indexée.
L'objet stocké sur le serveur d'Algolia est le suivant
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
Une chose à noter est que le texte est un tableau, puisque nous avons essayé de conserver la relation nœud de texte d'origine -> valeur réelle. Algolia gère très bien cela.
Une URL peut être configurée pour renvoyer un ping sur un serveur Web après chaque URL enregistrée dans Algolia. Le serveur web recevra un message avec ces informations :
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
L'indexation se fait automatiquement, à chaque exécution. Pour modifier le fonctionnement de l'indexation, veuillez consulter l'option de configuration index.settings.
MIT
Fabriqué avec amour à Montréal par Deux Huit Huit
Droits d'auteur (c) 2014-2019