Frage

Ich versuche, die MySQL-Tabelle in Solr mit DataImportHandler zu indizieren, aber es scheint keine Indizierung zu geben

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

Wenn ich versuche, im Solr-Administrator zu indizieren(http://localhost:8080/solr/dataimport?command=full-import) Ich bekomme diese Antwort

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

Wenn ich danach suche(http://localhost:8080/solr/select?q=*:*), erhalte ich 0 Ergebnis.

Update-1: schema.xml

War es hilfreich?

Lösung

Sie haben gerade die Zuordnung der Spalten im Ergebnissatz zu den Dokumentfeldern verpasst.Sie müssen dies innerhalb der tun entity Element von Ihnen 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>

In Ihrem Fall gibt es eine wichtige Zuordnung, die Sie übersehen haben. product_id Zu id.Solr kann Zuordnungen automatisch erkennen, wenn der Spaltenname und der Name des Feldes im Schema gleich sind, wie im Wiki geschrieben

Im obigen Beispiel gibt es Zuordnungen von Feldern zu Solr-Feldern.Es ist möglich, die Feldeinträge in Entitäten vollständig zu vermeiden, wenn die Namen der Felder mit denen im Solr-Schema identisch sind (Groß- und Kleinschreibung spielt keine Rolle).

Aber wie gesagt, in Ihrer Situation ist das nicht der Fall. product_id Und id unterscheiden sich.Seit deinem id Feld ist required Diese Dokumente werden nicht in den Index aufgenommen.

Weitere Informationen finden Sie hier im Solr-Wiki über den DataImportHandler oder im Referenzhandbuch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top