si3t.ch> cd /


Formulaire de recherche (gemini)

2021-05-01T21:07:51Z

J'ai éjouté un petit formulaire de recherche pour mon site.

Il ne dépend d'aucun service extérieur et permet de retrouver dans quel fichier se trouve le contenu souhaité.

Moteur de recherche sur mon site

C'est surtout une preuve que c'est faisable.

Il n'y a pas d'optimisation, et surtout pas de cache.

Vous l'aurez compris, j'ai pour objectif de faire la même chose en C (plus rapide et sécurisé).

En attendant, je vous pose le code là quand même, car c'est basé sur "grep" donc doit permettre (si on enlève l'option "-F") de faire des recherches par regex:

#!/bin/sh
# search engine in capsule
# prx <prx@si3t.ch>
# Licence MIT
# TODO : add cache

set -e

# CHANGEME
capsule_dir="../"
ext=".gmi"
msg="Search on si3t.ch:"
found="trouvé dans :"

if [ -z "${QUERY_STRING}" ]; then
	printf "10 $msg\r\n"
    exit
else
	s="$(printf "%s" "${QUERY_STRING}" | tr -cd '[:alnum:][:space:]_-')"
	printf "20 text/gemini\r\n"
    printf "# ${s} ${found}\n"
fi

# tr delete multiple spaces
# sed remove ":" after filename
# sed add "=> " for gemini link and replace leading "."

cd "${capsule_dir}"
find "." -type f  -name \*${ext} -exec grep -FiIsH "${s}" {} \; |\
    tr -s '[:space:]' |\
    sed -e 's/:/ /' -e 's/^\./=> /'

Une réaction?

Envoyez votre commentaire par mail.

Mode d'emploi de la liste de diffusion pour recevoir les réponses.