Package org.nuiton.wikitty.storage.solr

Indexation

See:
          Description

Class Summary
AttachmentInTree Class permettant de construire la liste des objets qui ont ete ajoute ou supprimer d'un noeud
ElementModifier Converti la valeur des objects de type Element pour etre utilisable dans Solr
FieldModifier Deprecated. since 3.3 use new ElementModifier with new query API
Restriction2Solr  
SolrResource Use to plug solr indexation in JTA transaction.
SolrUtil  
WikittyQueryVisitorToSolr Converti une Condition en une requete Solr, une fois la condition converti on peut la recuperer par WikittyQueryVisitorToSolr.getSolrQuery().
WikittySearchEngineSolr  
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 :()
WikittySolrQueryParser Add allow leading wildcard setAllowLeadingWildcard(true);
Example: {!wikitty q.op=AND df=text sort='price asc'}myfield:foo +bar -baz More information @see LuceneQParserPlugin
WikittySolrQueryParser.SolrQParser  
 

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
#null_field-[fieldname]booleanvrai si le champs est nulltruefalse
#fulltexttextla valeur de tous les champs ayant un suffixtruetrue

Pour les TreeNode, on ajoute des champs sur les objets attaches mais aussi sur les TreeNode eux meme. Sur les TreeNode:

  • #tree.root le nom racine de l'arbre
  • #tree.parents la liste de tous les parents de ce noeud, lui et le root compris
  • #tree.depth la profondeur de ce noeud dans l'arbre (le root = 1) Sur les objets attaches:
  • #tree.attached.[TreeNode.id] liste des parents du TreeNode (TreeNode.id) sur lequel est attache l'objet (l'objet pouvant etre sur plusieurs noeud
  • #tree.attached-all liste de tous les parents sur lequel est attache l'objet quelque soit le noeud de rattachement (utilise pour les facetisations)

    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 'fulltext' 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

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

  • #fulltext : 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

    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-2012 CodeLutin. All Rights Reserved.