[SPIP Zone] Pour une meilleur recherche full text dans Spip

Le spipien est par nature verbeux, il n'y a qu'a voir le volume des mailing-list, et les tonnes de mots gérés par le petit écureuil sur le Net.
Bref, Spip mérite un moteur de recherche digne de ce nom, et ce n'est pas la propagande Google qui dira le contraire.

Pour l'instant, mon moteur est à l'état de prototype fonctionnel, neutre par rapport à Spip, mais inspiré du travail de celui-ci pour pouvoir s'intégrer facilement à n'importe quel projet.

Ce qui marche :
* Les mots creux (stop words)
* La persistance de l'index, en utilisant une db, db4 en l'occurrence, mais ça devrait marcher avec ce qui traîne sur l'hébergement.
* Parser de requête (sans la gestion de parenthèse) avec les négations( -poire), les groupes de mots ("petits pois"), les attributs (titre:pomme), les débuts de mots (pom*), et tout ça mélangé ensemble.
  * Gestion des extraits pour situer le contexte.
  * Suggestion d'orthographe pour les mots en vrac.
  * Gestion des homophones.

Ce qui manque :
* Une indexation en php, pour l'instant, c'est du python.
* La colle avec Spip.
* Gestion des homophones pour affiner la suggestion.
* Une gestion clef en main des indexs
* Un algo de scoring digne de ce nom
* Gestion des groupes nominaux (comme dans la recherche sur libe.com)

Pour tester :
http://macbouffon.com/cherche/cherche.php
L'indexation se fait sur les feeds RSS de sites mac et informatiques plus généraliste, le vocabulaire est donc ciblé.

La doc :
Homophonie : https://admin.garambrogne.net/projets/revuedepresse/wiki/HomoPhonie
Persistance : https://admin.garambrogne.net/projets/revuedepresse/wiki/PersistanceDeDonnees

Du code sans doc verbeuse:
Suggestion : https://admin.garambrogne.net/projets/revuedepresse/browser/trunk/src/php/suggest.class.php
Recherche : https://admin.garambrogne.net/projets/revuedepresse/browser/trunk/src/php/cherche.class.php

Voila, toutes suggestions, critiques, questions ... sont bienvenues.

M.

* La colle avec Spip.

A ce propos il est fortement probable que le moteur d'indexation de
SPIP sorte du core pour passer en plugin, ce qui pourrait permettre
aux devs d'isoler son code (la colle dont tu as besoin), et de
brancher des alternatives.

-- Fil

Bonne idée !
Il y a des pistes sur l'API?
Un truc subtile, un moteur de recherche ne modifie pas, il efface puis recrée.

Pour ma part, je vais voir pour indexer un objet avec des attributs, ou une Array, chose facilement peupable à partir du SQL de Spip.

M.
Le 15 juin 07 à 21:19, Fil a écrit :

* La colle avec Spip.

A ce propos il est fortement probable que le moteur d'indexation de
SPIP sorte du core pour passer en plugin, ce qui pourrait permettre
aux devs d'isoler son code (la colle dont tu as besoin), et de
brancher des alternatives.

-- Fil

Il y a des pistes sur l'API?
Un truc subtile, un moteur de recherche ne modifie pas, il efface
puis recrée.

Il y a un début d'API dans ecrire/inc/recherche.php qui fait de la
recherche brutale à coups de
SELECT * WHERE x LIKE '%$recherche%'

Dans ecrire/inc/indexation il faudra conserver des choses, notamment
le marquer_indexer() qui signale qu'on a changé un élément

Et sur Connexion · GitLab
tu peux voir comment j'utilise cette API pour remplacer le critère
{recherche} traditionnel

-- Fil