J'avais un peu réfléchi au problème d'avoir un moteur à expressions régulières, le problème est que la recherche par expression régulière est, il me semble, incompatible avec l'indexation.
On pourrait certes imaginer un mécanisme qui exécuterait l'expression régulière sur la table d'index et qui ensuite afficherait les pages correspondants aux index correspondants (selon un ordre de pertinence qui a mon avis sera difficile à déterminer), mais je ne penses pas que ce sera aussi efficace que tu le souhaite. Les moteurs de recherches excluent en effet une grande partie des pages pour n'indexer que ce qui est pertinent, or des recherches par expressions régulières sont plutôt pour rechercher une syntaxe particulière et précise sur une page, typiquement le genre d'information qui disparaît lors de l'indexation.
Une autre approche, serait d'indexer les pages selon les résultats à telle ou telle expression régulière, il faudrait pour cela construire l'ensemble des phrases possibles et imaginables d'un alphabet donné et en déduire l'ensemble des expressions régulières décrivant ces phrases ... vous voyez le genre ? D'ici là, Hurd sera sorti en version stable, la paix sera revenu au proche orient et nous nous seront mort mon frère (sur l'air de Quand_les_hommes_vivront_d'amour).
La troisième approche, plus réaliste que la seconde mais toujours irréalisable, consiste à compiler l'expression régulière à la volée et à l'exécuter sur les quelques tera-octets de cache représentant toutes les pages « indexées » par ton moteur de recherche, chose à faire évidemment à chaque requête. Cela sera certainement envisageable lors de l'avènement d'IPoT, on pourra alors rediriger les requêtes une semaine ou un mois plus tôt pour qu'elles soient terminées au moment où l'utilisateur en fera la demande.
La solution la plus raisonnable consiste à avoir deux champs de recherches : dans un premier champ, l'utilisateur rentrerait des mots clefs qui seraient utilisés pour une recherche « classique » (par table d'index). Puis dans un deuxième champs, on rentrerait l'expression régulière souhaitée qui serait exécutée sur le sous ensemble de page résultant de la première recherche.
Oups, je viens de me rendre compte que j'ai écris un gros pavé.
# Moteur de recherche et expressions régulières
Posté par jardiland . En réponse au journal Un moteur de recherche aussi futé et précis que bash?. Évalué à 10.
On pourrait certes imaginer un mécanisme qui exécuterait l'expression régulière sur la table d'index et qui ensuite afficherait les pages correspondants aux index correspondants (selon un ordre de pertinence qui a mon avis sera difficile à déterminer), mais je ne penses pas que ce sera aussi efficace que tu le souhaite. Les moteurs de recherches excluent en effet une grande partie des pages pour n'indexer que ce qui est pertinent, or des recherches par expressions régulières sont plutôt pour rechercher une syntaxe particulière et précise sur une page, typiquement le genre d'information qui disparaît lors de l'indexation.
Une autre approche, serait d'indexer les pages selon les résultats à telle ou telle expression régulière, il faudrait pour cela construire l'ensemble des phrases possibles et imaginables d'un alphabet donné et en déduire l'ensemble des expressions régulières décrivant ces phrases ... vous voyez le genre ? D'ici là, Hurd sera sorti en version stable, la paix sera revenu au proche orient et nous nous seront mort mon frère (sur l'air de Quand_les_hommes_vivront_d'amour).
La troisième approche, plus réaliste que la seconde mais toujours irréalisable, consiste à compiler l'expression régulière à la volée et à l'exécuter sur les quelques tera-octets de cache représentant toutes les pages « indexées » par ton moteur de recherche, chose à faire évidemment à chaque requête. Cela sera certainement envisageable lors de l'avènement d'IPoT, on pourra alors rediriger les requêtes une semaine ou un mois plus tôt pour qu'elles soient terminées au moment où l'utilisateur en fera la demande.
La solution la plus raisonnable consiste à avoir deux champs de recherches : dans un premier champ, l'utilisateur rentrerait des mots clefs qui seraient utilisés pour une recherche « classique » (par table d'index). Puis dans un deuxième champs, on rentrerait l'expression régulière souhaitée qui serait exécutée sur le sous ensemble de page résultant de la première recherche.
Oups, je viens de me rendre compte que j'ai écris un gros pavé.