apache / lucene

Apache Lucene open-source search software
https://lucene.apache.org/
Apache License 2.0
2.49k stars 988 forks source link

org.apache.lucene.analysis.fr.FrenchAnalyzer could introduce french accent insensitive search. [LUCENE-3929] #5002

Closed asfimport closed 12 years ago

asfimport commented 12 years ago

The GermanAnalyzer does the same with the Umlaut for example. Searching for 'gehort' will return 'gehört' and 'gehort' .

I expected that the FrenchAnalyzer would also return 'sécuritaires' and 'securitaires' and searching for any of them, but it's not the case


Migrated from LUCENE-3929 by Geoffroy Schneck, resolved Mar 27 2012

asfimport commented 12 years ago

Robert Muir (@rmuir) (migrated from JIRA)

this is already the case in 3.6 (FrenchAnalyzer defaults were changed to use Savoy's stemmer instead of snowball, it does this for any word > 5 chars long). I think we can close this...

asfimport commented 12 years ago

Robert Muir (@rmuir) (migrated from JIRA)

I committed your example as a test demonstrating it works: http://svn.apache.org/viewvc?rev=1305870&view=rev

asfimport commented 12 years ago

Geoffroy Schneck (migrated from JIRA)

Indeed I was using version 2.4.1. Thank you very much for your feedback Robert.

asfimport commented 8 years ago

Jon Harper (migrated from JIRA)

But what about the many words with less than 5 letters ? Here's an example list of almost 400 words that can not be searched without the correct accents: For me, this makes it unuseable. But feel free to reclose this issue if the current behavior is the expected one.

{
    "à"
    "abbé"
    "aéra"
    "aère"
    "aéré"
    "âgé"
    "âgée"
    "âgés"
    "aidé"
    "ailé"
    "aimé"
    "aîné"
    "aisé"
    "aléa"
    "allé"
    "allô"
    "armé"
    "axé"
    "axée"
    "axés"
    "basé"
    "bâté"
    "bavé"
    "béat"
    "bébé"
    "bée"
    "béer"
    "bées"
    "béni"
    "bêta"
    "bête"
    "blé"
    "blés"
    "boxé"
    "buée"
    "buté"
    "çà"
    "café"
    "calé"
    "casé"
    "céda"
    "cède"
    "cédé"
    "cène"
    "cèpe"
    "ciré"
    "cité"
    "clé"
    "clés"
    "clôt"
    "codé"
    "cône"
    "côte"
    "côté"
    "coté"
    "créa"
    "crée"
    "créé"
    "crié"
    "cubé"
    "curé"
    "cuvé"
    "daté"
    "dé"
    "déc."
    "deçà"
    "déçu"
    "défi"
    "déjà"
    "delà"
    "déni"
    "dép."
    "dès"
    "dés"
    "dîné"
    "dôme"
    "dopé"
    "doré"
    "dosé"
    "doté"
    "doué"
    "dupé"
    "duré"
    "ébat"
    "écho"
    "échu"
    "écot"
    "écru"
    "écu"
    "écus"
    "édam"
    "édit"
    "égal"
    "élan"
    "élis"
    "élit"
    "élu"
    "élue"
    "élus"
    "élut"
    "ème"
    "émet"
    "émir"
    "émis"
    "émit"
    "émoi"
    "ému"
    "émue"
    "émus"
    "émut"
    "épée"
    "épi"
    "épia"
    "épie"
    "épié"
    "épis"
    "ère"
    "ères"
    "erré"
    "ès"
    "étai"
    "étal"
    "état"
    "étau"
    "été"
    "êtes"
    "étés"
    "être"
    "étui"
    "famé"
    "fané"
    "fée"
    "fées"
    "fêla"
    "fêle"
    "fêlé"
    "féru"
    "fêta"
    "fête"
    "fêté"
    "fétu"
    "fève"
    "fié"
    "fiée"
    "fiés"
    "figé"
    "filé"
    "fixé"
    "foré"
    "fumé"
    "fusé"
    "futé"
    "gagé"
    "garé"
    "gâté"
    "gavé"
    "gazé"
    "gèle"
    "gelé"
    "gémi"
    "gêna"
    "gène"
    "gêne"
    "gêné"
    "géra"
    "gère"
    "géré"
    "gobé"
    "gré"
    "grès"
    "gué"
    "gués"
    "hâlé"
    "hâté"
    "héla"
    "hèle"
    "hélé"
    "hère"
    "hôte"
    "hué"
    "huée"
    "hués"
    "humé"
    "idée"
    "inné"
    "iodé"
    "jasé"
    "jeté"
    "joué"
    "jubé"
    "jugé"
    "juré"
    "képi"
    "là"
    "lacé"
    "lamé"
    "lavé"
    "lès"
    "lésa"
    "lèse"
    "lésé"
    "lève"
    "levé"
    "lié"
    "liée"
    "liés"
    "limé"
    "logé"
    "loué"
    "luné"
    "luxé"
    "méat"
    "mêla"
    "mêle"
    "mêlé"
    "même"
    "mène"
    "mené"
    "mère"
    "mimé"
    "miné"
    "miré"
    "misé"
    "mité"
    "mixé"
    "môle"
    "mué"
    "muée"
    "mués"
    "muré"
    "muté"
    "nagé"
    "né"
    "née"
    "nées"
    "néon"
    "nés"
    "névé"
    "nié"
    "niée"
    "niés"
    "nô"
    "nôs"
    "noté"
    "noué"
    "noyé"
    "nuée"
    "ô"
    "obéi"
    "opté"
    "orée"
    "orné"
    "osé"
    "osée"
    "osés"
    "ôta"
    "ôte"
    "ôté"
    "ôtée"
    "ôter"
    "ôtes"
    "ôtés"
    "ôtez"
    "pâmé"
    "pané"
    "paré"
    "pâté"
    "pavé"
    "payé"
    "pèle"
    "pelé"
    "pêne"
    "père"
    "péri"
    "pèse"
    "pesé"
    "pète"
    "pété"
    "pilé"
    "pisé"
    "plié"
    "pôle"
    "posé"
    "pré"
    "près"
    "prés"
    "prêt"
    "prié"
    "pué"
    "racé"
    "ragé"
    "râlé"
    "ramé"
    "râpé"
    "rasé"
    "raté"
    "rayé"
    "ré"
    "réel"
    "réer"
    "réf."
    "régi"
    "rêne"
    "rêva"
    "rêve"
    "rêvé"
    "ridé"
    "rimé"
    "rivé"
    "rôda"
    "rôde"
    "rôdé"
    "rodé"
    "rôle"
    "rosé"
    "rôt"
    "rôti"
    "rôts"
    "roué"
    "rué"
    "ruée"
    "rués"
    "rusé"
    "saké"
    "salé"
    "sapé"
    "scié"
    "sème"
    "semé"
    "sève"
    "sévi"
    "skié"
    "sucé"
    "sué"
    "suée"
    "sués"
    "talé"
    "tapé"
    "taré"
    "tâté"
    "taxé"
    "tél."
    "télé"
    "ténu"
    "tête"
    "têtu"
    "thé"
    "thés"
    "tiré"
    "tôle"
    "tôt"
    "très"
    "trié"
    "tué"
    "tuée"
    "tués"
    "typé"
    "urée"
    "urgé"
    "usé"
    "usée"
    "usés"
    "vécu"
    "vélo"
    "vêt"
    "vête"
    "vêts"
    "vêtu"
    "vexé"
    "vidé"
    "viré"
    "visé"
    "volé"
    "voté"
    "voué"
    "zébu"
    "zèle"
    "zélé"
    "zéro"
    "zoné"
}
asfimport commented 8 years ago

Jon Harper (migrated from JIRA)

Actually I can not reopen an issue. Trying to ping @rmuir @rmuir

asfimport commented 8 years ago

Robert Muir (@rmuir) (migrated from JIRA)

The issue is one of time. If we want to change how that stemmer works or whatever, then we should at least measure and test that it doesnt send relevance down the tubes. If it is left to me to run those experiments, it will take some time, even though I do want to fix it. It is a lot of work, I can't test everyone's idea about how the analyzers should work.

asfimport commented 8 years ago

Jon Harper (migrated from JIRA)

@rmuir, Nice to know you have this is mind. Thanks for replying and good luck with this work

Another observation, FrenchLightStemmer implementing Savoy's stemmer only removes the following 'accents' (for words >=5 letters): FrenchLightStemmer.java:

          case 'à': 
          case 'á':
          case 'â': s[i] = 'a'; break;
          case 'ô': s[i] = 'o'; break;
          case 'è':
          case 'é':
          case 'ê': s[i] = 'e'; break;
          case 'ù':
          case 'û': s[i] = 'u'; break;
          case 'î': s[i] = 'i'; break;
          case 'ç': s[i] = 'c'; break;

This leaves out for exemple ë ï ü found in the following 221 words (including 'Noël', the french word for 'christmas'!)

aïeul
aïeule
aïeules
aïeuls
aïeux
aiguë
aiguës
aïoli
ambiguë
ambiguës
ambiguïté
ambiguïtés
amuïr
androïde
androïdes
anthropoïde
anthropoïdes
archaïque
archaïques
archaïsme
archaïsmes
astéroïde
astéroïdes
baïonnette
baïonnettes
caïd
caïds
caïman
caïmans
camaïeu
camaïeux
canoë
canoës
capharnaüm
caraïbe
caraïbes
celluloïd
ciguë
cocaïne
cocaïnomane
cocaïnomanes
cocaïnomanie
coïncida
coïncidaient
coïncidait
coïncidant
coïncide
coïncidé
coïncidence
coïncidences
coïncident
coïncidente
coïncidentes
coïncidents
coïncider
coïncidera
coïncideraient
coïnciderait
coïncidèrent
coïncideront
coïnculpé
coïnculpée
coïnculpées
coïnculpés
coït
coïter
coïts
contiguë
contiguës
contiguïté
crapaüter
dalaï-lama
dalaï-lamas
désambiguïser
égoïne
égoïnes
égoïsme
égoïste
égoïstement
égoïstes
entre-haïr
exiguë
exiguës
exiguïté
faïence
faïencerie
faïenceries
faïences
faïencier
faïenciers
glaïeul
glaïeuls
haï
haïe
haïes
haïr
haïra
haïrai
haïraient
haïrais
haïrait
haïras
haïrez
haïriez
haïrions
haïrons
haïront
haïs
haïssable
haïssables
haïssaient
haïssais
haïssait
haïssant
haïsse
haïssent
haïsses
haïssez
haïssiez
haïssions
haïssons
hautboïste
hautboïstes
hébraïque
hébraïques
hémorroïde
hémorroïdes
héroï-comique
héroï-comiques
héroïne
héroïnes
héroïnomane
héroïnomanes
héroïque
héroïquement
héroïques
héroïsme
humanoïde
humanoïdes
inouï
inouïe
inouïes
inouïs
judaïque
judaïques
judaïser
judaïsme
laïc
laïcisation
laïciser
laïcité
laïcs
laïque
laïques
laïus
laïusser
maïs
maoïste
maoïstes
mosaïque
mosaïques
naïf
naïfs
naïve
naïvement
naïves
naïveté
naïvetés
négroïde
négroïdes
noël
ouï-dire
ouïe
ouïes
ouïr
pagaïe
païen
païenne
païennes
païens
paranoïa
paranoïaque
paranoïaques
prosaïque
prosaïques
prosaïsme
rhodoïd
samouraï
samouraïs
sinusoïdal
sinusoïdale
sinusoïdales
sinusoïdaux
sinusoïde
sinusoïdes
spermatozoïde
spermatozoïdes
stoïcisme
stoïque
stoïquement
stoïques
suraiguë
suraiguës
taïga
taïgas
thaïlandais
thaïlandaise
thaïlandaises
thyroïde
thyroïdes
thyroïdien
thyroïdienne
thyroïdiennes
thyroïdiens
troïka
troïkas
typhoïde
typhoïdes
zaïrois
zaïroise
zaïroises

Regards, Jon