Package org.nuiton.wikitty.storage.solr

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

See: Description

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_bi WikittySearchEngineSolr#SUFFIX_BINARYaucunvidenontrue
FieldType.TYPE_b WikittySearchEngineSolr#SUFFIX_BOOLEANbooleanla valeur du champstruetrue
FieldType.TYPE_dt WikittySearchEngineSolr#SUFFIX_DATEdatela valeur du champstruetrue
FieldType.TYPE_d WikittySearchEngineSolr#SUFFIX_NUMERICsdoublela valeur du champstruetrue
FieldType.TYPE_w WikittySearchEngineSolr#SUFFIX_WIKITTYstringl'id du wikittytruetrue
FieldType.TYPE_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.