sdx-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sdx-users] Mot accentué versus opéra teur truncature


From: Martin Sevigny
Subject: Re: [sdx-users] Mot accentué versus opéra teur truncature
Date: Thu, 04 Nov 2004 08:19:14 +0100
User-agent: Mozilla Thunderbird 0.8 (Windows/20040913)

Bonjour,

Question éclair... Est-normale que losrque l'on utilise la truncature sur un mot avec des accents, on ait aucun résultats?

Par exemple:

frere* - me donne des résultats

frère* - ne donne rien

(même chose avec le ?)

"normal".

C'est pas seulement sur ma base... J'ai essayé sur le site Archives Canada France avec "montréal*" et "montreal*" et j'ai le même comportement.

Oui.

Je ne sais pas si c'est un bug ou une fonctionalité ;) mais je voulais votre avis...

Officiellement, c'est ce que j'appelle une "fonctionnalité ennuyeuse".

En fait, pour ne pas faire cela, il faudrait abandonner certains aspects
du multilinguisme dans SDX. Toutefois, pour la grande majorité des
sites, ce n'est pas utile.

A réfléchir. Il y a sûrement moyen d'écrire un QueryParser qui gère cela
un peu mieux.

Concrètement, lorsqu'il y a un "*" ou un "?" dans un mot d'une requête,
le mot en question n'est pas analysé avec l'analyseur de mots utilisé
lors de l'indexation. S'il n'y a pas de "*" ou "?", il est analysé.

Donc si dans le document il y a "frère", l'analyseur de mots retourne
"frere" à l'indexation (en général). Si on cherche "frer*", ça marche,
si on cherche "frèr*" ça ne marche pas car on cherche dans l'index des
mots qui commencent par "frèr" et il n'y en a évidemment pas.

Si vous êtes confiants que les requêtes simples n'auront jamais de trucs
complexes, vous pouvez faire ceci dans votre XSP:

<xsp:logic>
  String req = request.getParameter("q"); // q ou autre chose...
  req = req.toLowerCase();
  req = supprimeAccents(req);
</xsp:logic>
<sdx:executeSimpleQuery queryString="req"/>

Il vous reste à écrire supprimeAccents. A noter que la classe
fr.gouv.culture.sdx.search.lucene.analysis.filter.ISOLatin1AccentFilter
contient du code pour cela.

A bientôt,

Martin Sévigny





reply via email to

[Prev in Thread] Current Thread [Next in Thread]