SPB Git forge

spb/trouve-ka

Public ★ Pinned

Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com

40commits 1branches 0releases
9.2 MBsize
maindefault branch
23 days agolast push
Python 51.9% TypeScript 32.7% JavaScript 4.8% CSS 4.1% Shell 2.9% HTML 1.8% SQL 1.5%
12.3 KB · 210 lines html
Raw Blame History
1<!DOCTYPE html>2<!-- Page /doc de trouve-ka — générée à partir du gabarit commun Groupe KA (2026-08-24). -->3<html lang="fr">4<head>5<meta charset="utf-8">6<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">7<title>Documentation — Trouve·Ka</title>8<meta name="description" content="Comment fonctionne Trouve·Ka : guide pas à pas, données, architecture.">9<style>10  :root{ --ink:#101014; --paper:#faf9f6; --accent:#1c7ed6; --muted:#6b6b70; --line:#e6e4de; }11  *{box-sizing:border-box} html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);12    font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%}13  .container{max-width:960px;margin:0 auto;padding:0 20px}14  header.doc{background:var(--ink);color:var(--paper);padding:20px 0}15  header.doc .container{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}16  header.doc a{color:var(--paper);text-decoration:none}17  .wordmark{font-weight:800;font-size:20px;letter-spacing:.02em}18  .wordmark .ka{color:var(--accent)}19  .btn-pdf{display:inline-block;background:var(--accent);color:#fff;font-weight:700;20    padding:10px 18px;border-radius:999px;text-decoration:none;font-size:15px}21  .hero{padding:48px 0 8px}22  .hero h1{font-size:clamp(28px,5vw,44px);line-height:1.1;margin:0 0 12px}23  .hero h1 mark{background:var(--accent);color:#fff;padding:2px 8px}24  .hero p.lead{font-size:18px;color:var(--muted);max-width:640px}25  .kicker{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);26    border-left:3px solid var(--accent);padding-left:10px;margin:40px 0 8px;font-weight:700}27  section{padding:8px 0 16px}28  h2{font-size:26px;margin:6px 0 12px}29  .step{display:grid;grid-template-columns:56px 1fr;gap:16px;margin:26px 0;align-items:start}30  .step .num{width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--accent);31    display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px}32  .step h3{margin:6px 0 6px;font-size:19px}33  .step p{margin:0 0 12px;color:#3a3a40}34  .shot{border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 8px 30px rgba(16,16,20,.08)}35  .shot img{display:block;width:100%;height:auto}36  .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:16px 0}37  .card{border:1px solid var(--line);border-radius:12px;padding:16px;background:#fff}38  .card b{display:block;margin-bottom:6px}39  table{border-collapse:collapse;width:100%;font-size:15px}40  th,td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}41  th{background:var(--ink);color:var(--paper)}42  footer.doc{margin-top:56px;background:var(--ink);color:var(--paper);padding:28px 0;font-size:14px}43  footer.doc a{color:var(--accent);text-decoration:none}44  @media print{45    header.doc .btn-pdf{display:none}46    .shot{box-shadow:none;break-inside:avoid}47    .step{break-inside:avoid}48    a{color:inherit;text-decoration:none}49  }50  @media(max-width:640px){ .step{grid-template-columns:40px 1fr} .step .num{width:34px;height:34px;font-size:15px} }51</style>52</head>53<body>54<header class="doc">55  <div class="container">56    <a class="wordmark" href="/">Trouve<span class="ka">·Ka</span></a>57    <nav style="display:flex;gap:14px;align-items:center">58      <a href="/">← Retour au site</a>59      <a class="btn-pdf" href="./trouve-ka-documentation.pdf" download>Télécharger le PDF</a>60    </nav>61  </div>62</header>6364<div class="container">65  <div class="hero">66    <p class="kicker">Documentation · mise à jour 2026-08-24</p>67    <h1>Comment fonctionne <mark>Trouve·Ka</mark></h1>68    <p class="lead">Cherche le Québec. Un moteur de recherche web indépendant, Québec-first — son propre69    crawler, son propre index, son propre ranking, sans dépendre de Google, Bing ou Brave.</p>70  </div>7172  <section>73    <p class="kicker">Vue d'ensemble</p>74    <h2>À quoi sert le site</h2>75    <p><b>Trouve·Ka</b> est un vrai moteur de recherche québécois — pas un métamoteur : les résultats76    viennent exclusivement de son propre index. Le crawler <code>TrouveKABot</code> découvre le web77    québécois à partir de 64 seeds à forte autorité (gouvernement, municipalités, universités, médias),78    suit les liens, juge la pertinence québécoise de chaque page et l'indexe immédiatement : une page79    téléchargée est cherchable en 2 à 4 secondes. La recherche est bilingue (français/anglais, avec des80    synonymes comme « thermopompe » ↔ « heat pump ») et couvre aussi les 13 autres plateformes du81    Groupe KA — logements, propriétés, produits, restos, emplois, événements…</p>82    <div class="cards">83      <div class="card"><b>7 900+ domaines québécois</b>découverts par le crawler à partir de 64 seeds84      à forte autorité — et le frontier continue de grandir en permanence.</div>85      <div class="card"><b>Recherche en 20–95 ms</b>latence mesurée en production, affichée à côté du86      compteur de résultats sur chaque recherche.</div>87      <div class="card"><b>Cherchable en ~2–4 s</b>une page fetchée est indexée inline et devient88      trouvable en quelques secondes ; l'enrichissement arrive après, en asynchrone.</div>89      <div class="card"><b>Métriques publiques réelles</b>les pages <a href="/status">/status</a> et90      <a href="/stats">/stats</a> montrent les vrais compteurs du moteur, en direct — aucun chiffre91      simulé, c'est une règle du projet.</div>92    </div>93  </section>9495  <section>96    <p class="kicker">Guide pas à pas</p>97    <h2>Utiliser le site en 4 étapes</h2>9899    <div class="step">100      <div class="num">1</div>101      <div>102        <h3>Tapez votre recherche sur l'accueil</h3>103        <p>La page d'accueil va droit au but : une barre de recherche. Écrivez ce que vous cherchez en104        français ou en anglais — « cabane à sucre », « plombier Gatineau », « heat pump » — puis appuyez105        sur <b>Chercher</b> (ou Entrée).</p>106        <div class="shot"><img src="./img/etape1.png" alt="Étape 1 — page d'accueil de Trouve·Ka avec la barre de recherche"></div>107      </div>108    </div>109110    <div class="step">111      <div class="num">2</div>112      <div>113        <h3>Parcourez les résultats et affinez avec les filtres</h3>114        <p>La page de résultats affiche le nombre de résultats et la latence réelle de la requête115        (souvent moins de 100 ms). Chaque résultat montre le fil d'Ariane du site source, un extrait116        avec vos mots surlignés et, s'il y a lieu, une image. Les pastilles sous la barre permettent de117        filtrer par site du Groupe KA (Lou·Ka, Immo·Ka, Fabri·Ka…), par langue (français/anglais) ou118        par fraîcheur (24 h, semaine, mois, année). Le bouton « + Recherche sémantique » élargit la119        recherche au sens des mots, pas seulement aux mots exacts.</p>120        <div class="shot"><img src="./img/etape2.png" alt="Étape 2 — résultats pour « cabane à sucre » avec compteur, latence et filtres"></div>121      </div>122    </div>123124    <div class="step">125      <div class="num">3</div>126      <div>127        <h3>Passez en mode Images</h3>128        <p>La pastille <b>Images</b> transforme les résultats en galerie : chaque vignette est l'image129        représentative d'une page indexée, avec son titre et son domaine source. Les images sont130        affichées depuis leur site d'origine avec attribution — Trouve·Ka ne crawle jamais les images131        elles-mêmes. Un clic ouvre la page d'origine.</p>132        <div class="shot"><img src="./img/etape3.png" alt="Étape 3 — onglet Images : galerie de résultats pour « cabane à sucre »"></div>133      </div>134    </div>135136    <div class="step">137      <div class="num">4</div>138      <div>139        <h3>Suivez le moteur en direct — et proposez vos pages</h3>140        <p>La page <a href="/status">État du moteur</a> montre les vrais chiffres, actualisés toutes les141        10 secondes : pages indexées, pages téléchargées et indexées dans la dernière heure, URL en142        attente de crawl, couverture sémantique de l'index. Vous pouvez aussi143        <a href="/soumettre">soumettre une page</a> à indexer, consulter les144        <a href="/stats">statistiques détaillées</a> ou lire la page145        <a href="/trouveka-bot">À propos du robot</a> si vous administrez un site web.</p>146        <div class="shot"><img src="./img/etape4.png" alt="Étape 4 — page État du moteur avec les compteurs en direct"></div>147      </div>148    </div>149  </section>150151  <section>152    <p class="kicker">Sous le capot</p>153    <h2>D'où viennent les données</h2>154    <p>Tout part du crawler maison. Le pipeline complet :155    <b>Crawler → Frontier → Fetcher → Parser → Classification Québec → Déduplication → Indexer →156    Index → Ranking → API → Web App</b>.</p>157    <p>Le crawl démarre de <b>64 seeds à forte autorité</b> (gouvernement, municipalités, universités,158    médias) et suit les liens sortants ; il a ainsi découvert <b>plus de 7 900 domaines québécois</b>.159    Chaque page reçoit un score de pertinence québécoise (<code>page_quebec_score</code> et160    <code>domain_quebec_score</code>) calculé de façon déterministe — TLD .qc.ca/.quebec, toponymes,161    codes postaux G/H/J, indicatifs 418/514/438…, organisations connues (Hydro-Québec, RAMQ, UQAM…),162    JSON-LD, langue française — aucun modèle d'IA dans le chemin chaud. Les pages jugées pertinentes163    sont indexées immédiatement dans <b>OpenSearch</b> (cherchables en 2–4 secondes), puis enrichies en164    asynchrone : autorité de domaine, entités, embeddings pour la recherche sémantique — sans jamais165    bloquer l'indexation.</p>166    <p>Le classement des résultats combine la pertinence textuelle bilingue (BM25 FR/EN avec synonymes),167    les scores Québec, l'autorité du domaine, la fraîcheur de la page et un boost de localité168    (« plombier Gatineau » remonte les documents avec une preuve géographique). Le recrawl est169    adaptatif : une page qui ne change pas est revisitée moins souvent, une page volatile plus souvent.</p>170    <p>Le robot est poli et assumé : identifié <code>TrouveKABot</code> avec sa page publique171    <a href="/trouveka-bot">/trouveka-bot</a>, il respecte <code>robots.txt</code> et le172    <code>Crawl-delay</code>, espace ses requêtes par hôte (2 s par défaut) et évite les pièges de173    crawl (calendriers infinis, identifiants de session, facettes explosives).</p>174  </section>175176  <section>177    <p class="kicker">Questions fréquentes</p>178    <h2>FAQ</h2>179    <div class="cards">180      <div class="card"><b>Est-ce que Trouve·Ka utilise Google ou Bing ?</b>181      Non. C'est un moteur indépendant : son propre crawler, son propre index, son propre ranking.182      Aucune dépendance à Google, Bing ou Brave pour les résultats.</div>183      <div class="card"><b>Pourquoi mes mots en anglais trouvent des pages en français ?</b>184      La recherche est bilingue : des synonymes FR ↔ EN sont intégrés au moteur (« heat pump » trouve185      « thermopompe »), et la recherche sémantique retrouve les pages par le sens.</div>186      <div class="card"><b>Comment faire indexer mon site ?</b>187      Utilisez <a href="/soumettre">Soumettre une page</a>. Si votre site est québécois et accessible,188      le crawler le visitera en respectant votre <code>robots.txt</code>. Détails pour les webmestres :189      <a href="/trouveka-bot">/trouveka-bot</a>.</div>190      <div class="card"><b>Les compteurs affichés sont-ils réels ?</b>191      Oui. Les chiffres de <a href="/status">/status</a> et <a href="/stats">/stats</a> viennent192      directement du moteur en production, actualisés en continu — aucun compteur simulé.</div>193      <div class="card"><b>C'est quoi, les pastilles Lou·Ka, Immo·Ka… sous la barre ?</b>194      Des filtres par plateforme du Groupe KA : Trouve·Ka indexe aussi les autres sites de195      l'écosystème (logements, propriétés, produits, restos, emplois, événements…) et permet de196      restreindre la recherche à l'un d'eux.</div>197    </div>198  </section>199</div>200201<footer class="doc">202  <div class="container">203    <p><b>Trouve·Ka</b> — un service <a href="https://www.groupe-ka.com">Groupe KA</a>.204    Écosystème : les 13 plateformes sont liées au pied de chaque site.</p>205    <p>© 2026 Groupe KA — Simon-Pierre Boucher · <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a></p>206  </div>207</footer>208</body>209</html>210