Processus d'indexation

Le processus d'indexation consiste à ajouter des documents à un IndexWriter. Le processus de recherche consiste à récupérer des documents à partir d'un index à l'aide d'un IndexSearcher. Solr peut indexer le contenu structuré et non structuré.

Le contenu structuré est organisé. Par exemple, certaines des zones prédéfinies de la description du produit sont title, manufacture name, description et color.

Le contenu non structuré, en revanche, manque de structure et d'organisation. Par exemple, il peut se composer de fichiers PDF ou de contenu provenant de sources externes (telles que les tweets) qui ne suivent aucun modèle prédéfini.

Gestionnaire d'importation de données

Le gestionnaire d'importation de données peut effectuer des importations complètes ou des importations delta. Lorsque la commande d'importation complète est en cours d'exécution, elle stocke l'heure de début de l'opération dans le fichier dataimport.properties, qui se trouve dans le même répertoire que le fichier solrconfig.xml. Par exemple :

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
   <lst name="defaults">
     <str name="config">wc-data-config.xml</str>
    <str name="update.chain">wc-conditionalCopyFieldChain</str>
   </lst>
  </requestHandler>

Récupération, lecture et traitement des données

Le fichier wc-data-config.xml définit les comportements suivants :
  • Comment récupérer des données, notamment via l'utilisation de requêtes ou d'URL.
  • Ce qu'il faut lire, notamment les colonnes de jeu de résultats ou les zones XML.
  • Comment traiter, notamment modifier, ajouter ou supprimer des zones.
Par exemple : le base_solr/v3/CatalogEntry/conf/wc-data-config.xml fichier contient le contenu suivant :

<dataConfig>

  <dataSource name="WC database" 
          type="JdbcDataSource" 
          jndiName="jdbc/WCDB"
          readOnly="true"
          autoCommit="true"
          transactionIsolation="TRANSACTION_READ_COMMITTED"   
          holdability="CLOSE_CURSORS_AT_COMMIT"       
  />

  <dataSource basePath="${solr.core.instanceDir}/../Unstructured/temp/" 
          name="unstructuretmpfile"  
          type="com.ibm.commerce.solr.handler.RequestFileDataSource"
/>
Lorsque deux sources de données sont utilisées :
  • La base de données HCL Commerce est la source de données pour les données structurées.
  • unstructuretmpfile spécifie le chemin d'accès aux données non structurées.

En outre, le fichier contient les types de contenu suivants par défaut :

Les trois documents suivants existent : un document pour CatalogEntry, un pour le groupement, et un pour le kit dynamique.

Le document CatalogEntry contient les entités suivantes : Produit et attachment_content.

L'entité Produit contient les paramètres suivants :
query
Identifie les données pour renseigner les zones du document Solr lors des importations complètes.
deltaImportQuery
Identifie les données pour renseigner les zones lors des importations de delta.
deltaQuery
Identifie les clés primaires des entités actuelles qui ont changé depuis la dernière heure d'index.
deletedPkQuery
Identifie les documents à supprimer.
Transformer
Chaque ensemble de zones récupérées par l'entité peut être consommé directement par le processus d'indexation, ou modifié à l'aide de transformateurs afin de modifier une zone ou créer un nouvel ensemble de zones.
Les transformateurs sont chaînés et appliqués séquentiellement dans l'ordre dans lequel ils sont spécifiés. Une fois que les zones sont récupérées à partir de la source de données, la liste des colonnes d'entités est traitée une par une dans l'ordre répertorié à l'intérieur de la balise d'entité. Ensuite, elles sont examinées par le premier transformateur pour voir si l'un des attributs du transformateur est présent. Si c'est le cas, le transformateur est exécuté.
Lorsque toutes les colonnes d'entité répertoriées sont examinées, le processus est répété à l'aide du transformateur suivant dans la liste. Un transformateur peut être utilisé pour modifier la valeur d'une zone récupérée depuis la source de données ou pour remplir une zone non définie. Dans l'exemple précédent, les transformateurs suivants sont utilisés :
Transformateur Regex
Extrait ou manipule des valeurs à partir de zones (depuis la source) à l'aide d'expressions régulières.
ClobTransformer
Crée une chaîne à partir d'un type Clob dans la base de données.
NameValuePairTransformer
Crée dynamiquement de nouvelles zones qui sont ensuite utilisées comme attributs.
Le fichier wc-data-config.xml contient également des mappages entre les colonnes et les zones qui spécifient la relation entre les noms de zones d'index et les noms de colonne de base de données. Par exemple :

<field column="CATENTRY_ID" name="catentry_id" />
<field column="MEMBER_ID" name="member_id" />
<field column="CATENTTYPE_ID" name="catenttype_id_ntk_cs" />
<field column="PARTNUMBER" name="partNumber_ntk" />

Où : CATENTRY_ID est le nom de la colonne de base de données et catentry_id est le nom de la zone d'index.

Exploration de contenu non structuré

Pour le contenu non structuré, Solr ExtractingRequestandler utilise Apache Tika pour permettre aux utilisateurs de charger des fichiers binaires et des données non structurées sur Solr. Ensuite, Solr extrait et indexe le contenu.

HCL Commerce utilise l'explorateur de contenu de site Droid pour explorer le Web et placer le contenu dans le fichier. C'est-à-dire, à partir du chemin d'accès unstructuretmpfile spécifié dans le fichier wc-data-source.xml dans l'index CatalogEntry. Ensuite, Tika analyse ce fichier et les informations sont indexées par le DIH. Les données non structurées proviennent de deux sources : la base de données et l'explorateur. L'index non structuré contient deux fichiers de configuration de données : Le fichier wc-data-config.xml contient des pièces jointes de produit, telles que des fichiers PDF, tandis que wc-web-data-config.xml contient du contenu Web.
Remarque : Tout le contenu non structuré ne doit pas être chiffré, afin de pouvoir être indexé et analysé correctement.
Par exemple, le fichier solrconfig.xml contient le contenu suivant :

<!-- Solr Cell Update Request Handler

     http://wiki.apache.org/solr/ExtractingRequestHandler

   -->
  <requestHandler name="/update/extract"
            startup="lazy"
            class="solr.extraction.ExtractingRequestHandler" >
   <lst name="defaults">
    <!-- All the main content goes into "text"... if you need to return
        the extracted text or do highlighting, use a stored field. -->
    <str name="fmap.content">text</str>
    <str name="lowernames">true</str>
    <str name="uprefix">ignored_</str>

    <!-- capture link hrefs but ignore div attributes -->
    <str name="captureAttr">true</str>
    <str name="fmap.a">links</str>
    <str name="fmap.div">ignored_</str>
   </lst>
  </requestHandler>
Où :
  • Tika détermine automatiquement le type de document d'entrée et produit un flux XHTML qui est ensuite adapté à un SAX ContentHandler.
  • Solr réagit ensuite aux événements Tika SAX et crée les zones à indexer.
  • Tika produit des informations de métadonnées telles que Title, Subject et Author.
  • Tout le texte extrait est ajouté à la zone content. Définir Fmap.content sur text entraîne l'ajout du contenu à la zone text.

Pour plus d'informations sur le contenu non structuré, voir Contenu non structuré et de site.

Pour plus d'informations sur le schéma d'index HCL Commerce, voir HCL Commerce Search schéma d'index et HCL Commerce Search définition de schéma d'index.