Bonjour

Je debute avec Lucene, et j'ai il y a un point (important) sur lequel j'ai un doute.

Lorsqu'on cree un Field lucene, on peut specificier si celui ci doit etre stocké (Yes, No, Compressed) et indexé (oui ou non et si oui avec differentes options)

Concernant le stockage, si j'ai bien compris ca permet de récupère la valeur apres une recherche.
Prenons un exemple: j'ai deux documents, avec chacun un champ "nomAuteur".
Mon document doc1 a comme valeur de nom "Jean Claude Dusse" et mon document doc2 document la valeur de nom "Jean Claude VanDamme"

Si je stocke mes 2 champs, alors une recherche sur "Jean" lucene me sortira mes 2 documents avec les valeurs.
C'est à dire que dans les résultats de ma recherche me retournera 2 documents dont je pourrais récupérer le nom (via un doc.get("nom"))

En revanche si il ne sont pas stockes, alors lucene saura me dire que les documents contiennent "jean" mais je ne pourrais pas récupérer la valeur (doc.get("nom") ne retournera rien).

J'ai bon ?

L'utilité d'un tel systeme serait par exemple de faire une recherche sur des mots clés.

On a un texte auquel est associé plusieurs mots clés mais ce mot clé n'apparait pas forcement dans le texte (par exemple un cours de geographie peut contenir plein d'information sur un pays mais aucunement les mots "cours" et "geographie")
Dans ce cas la, on stocke le cours en lui même (pour pouvoir l'afficher après une recherche) mais les mots clés "cours" et "géographie" si ils doivent etre associés au document lucene via un champ n'ont pas à être stockés puisqu'ils servent uniquement à retrouver le document mais ne sont pas utile une fois la recherche effectuée.

C'est bien ca ?


Ma seconde questions concerne les options d'indexation.
Un champ non indexé ne pourra pas servir à la recherche.
Si je reprend mon cours de géographie, on peut imaginer que la taille du cours doit pouvoir être affichée dans les résultats, mais qu'il n'est pas utile/possible de faire une recherche sur les cours de plus de 100Ko

Par contre les différentes options d'indexation me laisse perplexe.
Si j'ai bien compris (NOT_)ANALYSED définit si la valeur doit être considérée comme un seul mot (not_analysed) ou comme un texte à analyser et filtrer (analysed)

En clair, si je stocke le nom "Jean Claude Dusse" comme Analysed, la recherche sur "Jean" me sortira le document.
En revanche si il est "not analysed" alors chercher "Jean" ne trouvera rien, alors que chercher "Jean Claude Dusse" me sortira le document.

C'est ca ?

Par contre j'ai du mal à comprendre l'option "NO_NORMS".
Ca fait quoi exactement ? C'est quoi les "norms" ?

Merci pour toute aide.