Package org.nuiton.wikitty.storage.solr

Indexation Ce module sert a l'indexation des wikitties dans SolR.

See:
          Description

Interface Summary
FieldModifier use to permit client to modify fieldname during query generation
 

Class Summary
RAMDirectoryFactory Directory provider for using lucene RAMDirectory Only exists in version 4.0 of solr, but we used 1.4.1.
RAMDirectoryFactory.RefCntRamDirectory  
Restriction2Solr  
SolrResource Use to plug solr indexation in JTA transaction.
SolrUtil  
TypeFieldModifier  
WikittyQueryParser Add allow leading wildcard setAllowLeadingWildcard(true);
Example: {!
WikittyQueryParser.SolrQParser  
WikittySearchEngineSolr  
WikittySearchEngineSolr.ReindexChildTreeNode Helper to get information nodes and elements for reindexation.
WikittySearchEngineSolrIndexInTreeNode  
WikittySolrConstant Extraction des constantes de WikittySearchEngineSolr pour pouvoir les utiliser dans les différentes implantations de WikittySearchEngine car il est très lié au fichier de configuration Solr partagé par les différentes implantation (car impossible de trouver comment specifier les fichiers de configuration a utiliser pour une implantation donnees :()
 

Package org.nuiton.wikitty.storage.solr Description

Indexation

Ce module sert a l'indexation des wikitties dans SolR. Chaque champs d'un wikitty est indexe de differente facon selon son type. Chaque type de champs est suffixe par un marqueur.
Type wikittySuffixeType d'indexationvaleurstoredmultiValued
FieldType.TYPE.BINARY_bi WikittySearchEngineSolr#SUFFIX_BINARYaucunvidenontrue
FieldType.TYPE.BOOLEAN_b WikittySearchEngineSolr#SUFFIX_BOOLEANbooleanla valeur du champstruetrue
FieldType.TYPE.DATE_dt WikittySearchEngineSolr#SUFFIX_DATEdatela valeur du champstruetrue
org.nuiton.wikitty.entities.FieldType.TYPE#NUMBER_d WikittySearchEngineSolr#SUFFIX_NUMERICsdoublela valeur du champstruetrue
FieldType.TYPE.WIKITTY_w WikittySearchEngineSolr#SUFFIX_WIKITTYstringl'id du wikittytruetrue
FieldType.TYPE.STRING_s WikittySearchEngineSolr#SUFFIX_STRINGstringla valeur du champstruetrue
_s_c WikittySearchEngineSolr#SUFFIX_STRING_LOWERCASEstringla valeur du champs en minusculetruetrue
_s_t WikittySearchEngineSolr#SUFFIX_STRING_FULLTEXTtextla valeur du champstruetrue
D'autres champs sont indexes
champsType d'indexationvaleurstoredmultiValued
#idstringl'id du wikittytruefalse
#extensionsstringla liste des extensionstruetrue
#not_null_fieldsstringla liste des champs qui doivent etre non nulltruetrue
#fulltexttextla valeur de tous les champs ayant un suffixtruetrue

Les champs sont tous restockes dans une extension 'all' pour pouvoir faire des recherches sur toutes les extensions en meme temps. Par exemple rechercher tout ce qui porte le 'nom' 'portable' quelque soit l'extension (*.nom:portable)

Les chaines de caracteres doivent obligatoirement etre indexee en type string si l'on veut pouvoir faire des facettes dessus. Il faut donc obligatoirement indexer les chaines en 'string' et aussi en 'text' pour pouvoir les utiliser dans les facettes mais aussi que la recheche soit plus permissive.

SolR copie tous les champs dans le champs 'text' pour la recherche fulltext ce champs est le champs par defaut de recherche.

id est marque comme devant etre un champs unique (et donc lorsqu'on enregistre un nouveau document avec le meme id, l'ancien est supprime)

Tous les champs sont marque stored car lors de la reindexation des arbres on a besoin de faire une copie de l'ancien document et donc de pouvoir recuperer la valeur des champs (voir alternative)

Par exemple si on a un champs product.description: String nous le retrouverons dans 7 champs de l'index:

  • text : text (car est la copie de tous les champs)
  • product.description_s : string (necessaire pour la facetisation)
  • product.description_s_c : string
  • product.description_s_t : text
  • all.description_s : string
  • all.description_s_c : string
  • all.description_s_t : text il faudrait que les 5 derniers soit autogenere par solr en utilisant un copyField dans le schema.xml et qu'il ne soit pas stocke. Mais pour cela il faudrait que copyField permette l'utilisation de regexp (faire un patch a SolR ?) et aussi definir les all pour les autres types copyField ne support que une * et au debut ou a la fin, donc actuellement il serait possible d'avoir et d'enregistrer les champs deux fois en extName.fieldName et en all.fieldName ensuite lorsqu'on a besoin de copier un document il ne faut prendre les champs id, extensions, not_null_fields et les champs ne commencant pas par 'all.' et se finissant exclusivement par _bi, _b, _dt, _d, _s, _w. Cest dernier seront enregistrer aussi en all. Ainsi on passe de 6 champs stocke + 1, a 1 champ stocker + 6. Pour les chaines et de 2 champs stockes a 1 champ stocke + 1.

    alternative au stockage de tout les champs

    Une alternative serait de ne reprendre que les champs reels (pas les copies) et recreer les copies a partir de ceux la. Les copies pourront ne plus etre stored=true.

    Une autre alternative serait de récuperer l'objet dans le Storage et de le reindexer completement



    Copyright © 2009-2011 CodeLutin. All Rights Reserved.