Question

J'essaie d'indexer la table MySQL dans Solr à l'aide de DataImportHandler, mais il ne semble pas y avoir d'indexation.

données-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">
        </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>

Quand j'essaie d'indexer dans solr admin (http://localhost:8080/solr/dataimport?command=full-import) je reçois cette réponse

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

Après si je cherche (http://localhost:8080/solr/select?q=*:*), j'obtiens 0 résultat.

Mise à jour-1 : schéma.xml

Était-ce utile?

La solution

Vous venez de manquer le mappage des colonnes du jeu de résultats avec les champs des documents.Vous devez le faire dans le entity élément de votre 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>

Dans votre cas, vous avez manqué une cartographie vitale. product_id à id.Solr peut détecter automatiquement les mappages, si le nom de la colonne et le nom du champ dans le schéma sont égaux, comme indiqué dans le wiki

Dans l'exemple ci-dessus, il existe des mappages de champs avec des champs Solr.Il est possible d'éviter totalement les entrées de champs dans les entités si les noms des champs sont les mêmes (la casse n'a pas d'importance) que ceux du schéma Solr.

Mais comme je l'ai dit, dans votre situation, ce n'est pas le cas. product_id et id diffèrent.Depuis votre id le champ est required ces documents ne figureront pas dans l’index.

Plus d'informations peuvent être trouvées dans le wiki de Solr à propos du DataImportHandler ou dans le guide de référence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top