Pregunta

Estoy intentando indexar la tabla MySQL en Solr usando DataImportHandler, pero parece que no se indexa.

configuración de datos.xml

 <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost/solr_tut" 
                  user="root" 
                  password=""/>
      <document>
        <entity name="product_id" 
                query="select product_id,name,description from products">
        </entity>
      </document>
    </dataConfig>

solrconfig.xml

<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />


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

Cuando intento indexar en solr admin (http://localhost:8080/solr/dataimport?command=full-import) estoy recibiendo esta respuesta

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">19</int>
</lst>
<lst name="initArgs">
 <lst name="defaults">
  <str name="config">data-config.xml</str>
 </lst>
</lst>
<str name="command">full-import</str>
<str name="status">idle</str>
<str name="importResponse"/>
<lst name="statusMessages">
   <str name="Total Requests made to DataSource">1</str>
   <str name="Total Rows Fetched">4</str>
   <str name="Total Documents Skipped">0</str>
   <str name="Full Dump Started">2014-01-10 10:38:00</str>
   <str name="">
     Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
   </str>
   <str name="Committed">2014-01-10 10:38:00</str>
   <str name="Total Documents Processed">0</str>
   <str name="Time taken">0:0:0.33</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>

Después si busco (http://localhost:8080/solr/select?q=*:*), obtengo 0 resultado.

Actualización-1: esquema.xml

¿Fue útil?

Solución

Simplemente se perdió la asignación de las columnas del conjunto de resultados a los campos de los documentos.Tienes que hacerlo dentro del entity elemento de tu data-config.xml.

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
  <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/solr_tut" 
              user="root" 
              password=""/>
  <document>
    <entity name="product_id" 
            query="select product_id,name,description from products">

 <!-- this is the place where you map the columns of your result set
      to fields of the new solr document -->

        <field column="PRODUCT_ID" name="id" />
        <field column="NAME" name="name" />
        <field column="DESCRIPTION" name="description" />

    </entity>
  </document>
</dataConfig>

En su caso, hay un mapeo vital que se le pasó por alto. product_id a id.Solr puede detectar automáticamente asignaciones, si el nombre de la columna y el nombre del campo en el esquema son iguales, como está escrito en la wiki.

En el ejemplo anterior, hay asignaciones de campos a campos Solr.Es posible evitar totalmente las entradas de campos en entidades si los nombres de los campos son los mismos (el caso no importa) que los del esquema Solr.

Pero como dije, en tu situación ese no es el caso. product_id y id difieren.desde tu id el campo es required esos documentos no aparecerán en el índice.

Se puede encontrar más información en la Wiki de Solr sobre DataImportHandler o en la guía de referencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top