La recherche par catègories peut se présenter sous deux formes bien distinctes :
une recherche par sélection unique de catégorie parmi une arborescence
une recherche par sélection multiple parmi plusieurs catégories de critères indépendants
Dans les deux cas, les catégories sont décrites à l'aide de fichiers XML au format RSS. Le premier fichier décrit la liste des catégories accessibles au premier niveau. Le titre et la description du channel n'ont qu'un rôle informatif et ne sont pas pris en compte. Chaque item désigne une catégorie : la rubrique title correspond au titre de la catégorie qui sera affiché dans la page de recherche, la rubrique link correspond à un flux xml décrivant le contenu de la catégorie et la rubrique description correspond à l'identifiant de la catégorie qui sera utilisé dans l'url de recherche. Dans le cas 1 de sélection unique, cet identifiant sera retourné à la place du terme {categId} présent dans la définition de l'url du moteur. Dans le cas 2 de sélection multiple, cet identifiant sera utilisé comme nom de paramètre dans l'url de recherche avec l'identifiant de l'item sélectionné dans la catégorie comme valeur et il doit donc commencer par un caractère alphabétique.
Imaginons le cas d'un moteur de recherche de recettes de cuisine. Le fichier xml de premier niveau (categ0.xml) peut être défini comme suit :
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Catégories principales</title> <link>http://.../categ0.xml</link> <description>fichier exemple</description> <item> <title>Entrées</title> <link>http://.../categ1.xml</link> <description>1</description> </item> <item> <title>Viandes</title> <link>http://.../categ2.xml</link> <description>2</description> </item> <item> <title>Desserts</title> <link>http://.../categ3.xml</link> <description>3</description> </item> </channel> </rss>
Le fichier categ1.xml décrivant les catégories d'entrées peut être défini comme suit :
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Entrées</title> <link>http://.../categ1.xml</link> <description>1</description> <item> <title>Salades</title> <description>11</description> </item> <item> <title>Soupes</title> <description>12</description> </item> ... </channel> </rss>
Il est possible de définir autant de niveaux que souhaité. Par exemple, on peut préciser des sous-catégories de salades en précisant dans la rubrique link un nouveau flux xml comme suit :
<item> <title>Salades</title> <description>11</description> <link>http://.../categ11.xml</link> </item>
Il est possible de choisir une présentation à plat des catégories ou à l'aide de boîtes de choix. La présentation à plat est plus conviviale mais devient lourde s'il y a trop de catégories sur un même niveau.
Le terme {categId} de l'url du moteur sera remplacé par la valeur 1 si on choisit la catégorie « Entrées », par la valeur 12 si on choisit la catégorie « Soupes » , ...
Imaginons le cas d'un moteur de recherche d'offre d'emploi. Le fichier xml de premier niveau (categ0.xml) peut être défini comme suit :
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Catégories principales</title> <link>http://.../emploi0.xml</link> <description>fichier exemple</description> <item> <title>Par métier</title> <link>http://.../emploi1.xml</link> <description>metier</description> </item> <item> <title>Par région</title> <link>http://.../emploi2.xml</link> <description>region</description> </item> </channel> </rss>
Le fichier emploi1.xml décrivant les catégories de métier peut être défini comme suit :
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Catégories de métier</title> <link>http://.../emploi1.xml</link> <description>metier</description> <item> <title>Comptabilité</title> <description>1</description> </item> <item> <title>Finance</title> <description>2</description> </item> <item> <title>Commercial</title> <description>3</description> </item> ... </channel> </rss>
Ainsi que le fichier emploi2.xml décrivant les régions des offres d'emploi :
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Liste des régions</title> <link>http://.../emploi2.xml</link> <description>region</description> <item> <title>Alsace</title> <description>1</description> </item> <item> <title>Aquitaine</title> <description>2</description> </item> ... </channel> </rss>
Les choix de la rubrique « finance » et de la région « Alsace » seront définis dans l'url du moteur via la séquence « &metier=2®ion=1 ».