Proceso de indexación

El proceso de indexación implica la adición de documentos a un IndexWriter. El proceso de búsqueda implica la recuperación de documentos de un índice utilizando un IndexSearcher. Solr puede indexar contenido estructurado y no estructurado.

El contenido estructurado está organizado. Por ejemplo, algunos de los campos predefinidos de la descripción del producto son title, manufacture name, description y color.

En cambio, el contenido no estructurado carece de estructura y organización. Por ejemplo, puede constar de archivos PDF o contenido de orígenes externos (tales como tweets) que no siguen ningún patrón predefinido.

Manejador de importación de datos

El manejador de importación de datos puede realizar importaciones completas o importaciones delta. Cuando el mandato de importación completa se ejecuta, almacena la hora de inicio de la operación en el archivo dataimport.properties, que está en el mismo directorio que el archivo solrconfig.xml. Por ejemplo:

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

Captación, lectura y proceso de datos

El archivo wc-data-config.xml define los comportamientos siguientes:
  • Cómo captar datos, por ejemplo utilizando consultas o URL.
  • Cómo leer, por ejemplo columnas de conjunto de resultados o campos XML.
  • Cómo procesar, por ejemplo modificar, añadir o eliminar campos.
Por ejemplo: el archivo iniciosolr/v3/CatalogEntry/conf/wc-data-config.xml contiene el contenido siguiente:

<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"
/>
Donde se utilizan dos orígenes de datos:
  • La base de datos de HCL Commerce es el origen de datos para los datos estructurados.
  • unstructuretmpfile especifica la vía de acceso a los datos no estructurados.

Además, el archivo contiene los siguientes tipos de contenido de forma predeterminada:

Existen los tres documentos siguientes: uno para CatalogEntry, otro para paquete compuesto y otro para el kit dinámico.

El documento CatalogEntry contiene las entidades siguientes: Product y attachment_content.

La entidad Product contiene los parámetros siguientes:
query
Identifica los datos para llenar los campos del documento Solr durante las importaciones completas.
deltaImportQuery
Identifica los datos para llenar campos durante las importaciones delta.
deltaQuery
Identifica las claves primarias de las entidades actuales que han cambiado desde la última hora de índice.
deletedPkQuery
Identifica los documentos para eliminar.
Transformer
Cada conjunto de campos captados por la entidad los puede consumir directamente el proceso de indexación o cambiar utilizando transformadores para modificar un campo o crear un nuevo conjunto de campos.
Los transformadores se encadenan y se aplican secuencialmente en el orden en el que se especifican. Después de captar los campos del origen de datos, la lista de columnas de entidad se procesan de una en una en el orden que se lista en el código de entidad. A continuación, los explora el primer transformador para ver si está presente alguno de los atributos del transformador. Si está presente, se ejecuta el transformador.
Cuando se han explorado todas las columnas de entidad listadas, el proceso se repite utilizando el transformador siguiente de la lista. Se puede utilizar un transformador para modificar el valor de un campo captado desde el origen de datos o para llenar un campo no definido. En el ejemplo anterior, se utilizan los transformadores siguientes:
Regex Transformer
Extrae o manipula valores de campos (del origen) utilizando expresiones regulares.
ClobTransformer
Crea una serie a partir de un tipo Clob en la base de datos.
NameValuePairTransformer
Crea dinámicamente campos nuevos que, a continuación, se utilizan como atributos.
El archivo wc-data-config.xml también contiene correlaciones de columna con campo que especifican la relación entre los nombres de campo de índice y los nombres de columna de base de datos. Por ejemplo:

<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" />

Donde: CATENTRY_ID es el nombre de columna de base de datos y catentry_id es el ​​Campo de índice​ Nombre​.

Rastreo de contenido no estructurado

Para contenido no estructurado, ExtractingRequestandler de Solr utiliza Apache Tika para permitir que los usuarios suban archivos binarios y datos no estructurados a Solr. A continuación, Solr extrae e indexa el contenido.

HCL Commerce WebSphere Commerce utiliza el rastreador de contenido de sitio Droid para rastrear la web y poner el contenido en el archivo. Es decir, desde la vía de acceso unstructuretmpfile que se especifica en el archivo wc-data-source.xml en el índice CatalogEntry. A continuación, Tika analiza este archivo y el DIH indexa la información. Los datos no estructurados proceden de dos orígenes: la base de datos y el rastreador. El índice no estructurado contiene dos archivos de configuración de datos: El archivo wc-data-config.xml contiene adjuntos del producto, como archivos PDF, mientras que el wc-web-data-config.xml contiene contenido Web.
Nota: Todo el contenido no estructurado no debe cifrarse, para poderse indexar y rastrear correctamente.
Por ejemplo, el archivo solrconfig.xml contiene el contenido siguiente:

<!-- 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>
Donde:
  • Tika determina automáticamente el tipo de documento de entrada y produce una corriente XHTML que luego se ajusta a un ContentHandler SAX.
  • Entonces Solr reacciona a los sucesos SAX de Tika y crea los campos a indexar.
  • Tika produce información de metadatos como Title, Subject y Author.
  • Todo el texto extraído se añade al campo content.content Si se establece Fmap.content en text, el contenido se añade al campo text.

Para obtener más información sobre el contenido no estructurado, consulte Contenido no estructurado y contenido del sitio.

Para obtener más información sobre el esquema de índice de WebSphere Commerce, consulte y .HCL CommerceEsquema del índice de HCL Commerce SearchDefinición de esquema de índice de HCL Commerce Search