2015-04-07 8 views
5

Ich habe Solr 5.0.0 auf Windows Server 2012. Ich möchte alle Daten aus meiner Tabelle in Solr-Engine laden.Data-config.xml und mysql - Ich kann nur "ID" Spalte laden

Meine Daten-config.xml sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8" ?> 
<!--# define data source --> 
<dataConfig> 
<dataSource type="JdbcDataSource" 
     driver="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/database" 
     user="root" 
     password="root"/> 
<document> 
<entity name="my_table" 
pk="id" 
query="SELECT ID, LASTNAME FROM my_table limit 2"> 
<field column="ID" name="id" type="string" indexed="true" stored="true" required="true" /> 
<field column="LASTNAME" name="lastname" type="string" indexed="true" stored="true"/> 
</entity> 
</document> 
</dataConfig> 

Wenn ich wählen Datenimport, habe ich eine Antwort bekam:

Indexing completed. Added/Updated: 2 documents. Deleted 0 documents  
Requests: 1, Fetched: 2, Skipped: 0, Processed: 2 

Und Raw Debug-Reaktion:

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 280 
    }, 
    "initArgs": [ 
    "defaults", 
    [ 
     "config", 
     "data-config.xml" 
    ] 
    ], 
    "command": "full-import", 
    "mode": "debug", 
    "documents": [ 
    { 
     "id": [ 
     1983 
     ], 
     "_version_": [ 
     1497798459776827400 
     ] 
    }, 
    { 
     "id": [ 
     1984 
     ], 
     "_version_": [ 
     1497798459776827400 
     ] 
    } 
    ], 
    "verbose-output": [ 
    "entity:my_table", 
    [ 
     "document#1", 
     [ 
     "query", 
     "SELECT ID,LASTNAME FROM my_table limit 2", 
     "time-taken", 
     "0:0:0.8", 
     null, 
     "----------- row #1-------------", 
     "LASTNAME", 
     "Gates", 
     "ID", 
     1983, 
     null, 
     "---------------------------------------------" 
     ], 
     "document#2", 
     [ 
     null, 
     "----------- row #1-------------", 
     "LASTNAME", 
     "Doe", 
     "ID", 
     1984, 
     null, 
     "---------------------------------------------" 
     ], 
     "document#3", 
     [] 
    ] 
    ], 
    "status": "idle", 
    "importResponse": "", 
    "statusMessages": { 
    "Total Requests made to DataSource": "1", 
    "Total Rows Fetched": "2", 
    "Total Documents Skipped": "0", 
    "Full Dump Started": "2015-04-07 15:05:22", 
    "": "Indexing completed. Added/Updated: 2 documents. Deleted 0 documents.", 
    "Committed": "2015-04-07 15:05:22", 
    "Optimized": "2015-04-07 15:05:22", 
    "Total Documents Processed": "2", 
    "Time taken": "0:0:0.270" 
    } 
} 

Und schließlich, wenn ich solr

frage
http://localhost:8983/solr/test/query?q=*:* 

Ich habe eine Antwort bekam:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":0, 
    "params":{ 
     "q":"*:*"}}, 
    "response":{"numFound":2,"start":0,"docs":[ 
     { 
     "id":"1983", 
     "_version_":1497798459776827392}, 
     { 
     "id":"1984", 
     "_version_":1497798459776827393}] 
    }} 

Ich möchte auch Nachname Spalte sehen. Warum kann ich nicht?

+0

Post schema.xml – arun

+0

Es sieht aus wie Sie versuchen, Ihre Felder zu definieren, wie Sie normalerweise in der 'schema.xml' direkt Ihr in' data-config.xml', mit dem ich experimentieren müsste, aber ich glaube nicht, dass das tatsächlich möglich ist. Das '' Element in der 'data-config.xml' ist mehr über das Mapping der zurückgegebenen SQL' Spalte' mit dem erwarteten Solr Feld 'name'. Definieren Sie in 'schema.xml' ein Feld' lastname'? Der Datenimporteur löscht normalerweise Felder, die von Ihren Abfragen zurückgegeben werden, wenn sie nicht definierten Feldern zugeordnet sind. – frances

+0

Danke für die Antworten! Also: 1. Ich geänderte Daten-config.xml zu: \t ' \t \t \t \t \t ' 2. Und fügte hinzu Linie ' ' Meine schema.xml sieht wie folgt aus: http: //pastebin.com/xLgsv31h –

Antwort

12

Diese Warnung in den Protokollen ist eigentlich das eigentliche Problem.

Wenn Sie in der solrconfig.xml Datei schauen, werden Sie einen Abschnitt haben:

<schemaFactory class="ManagedIndexSchemaFactory"> 
    <bool name="mutable">true</bool> 
    <str name="managedSchemaResourceName">managed-schema</str> 
</schemaFactory> 

Dies bedeutet, dass Ihre schema.xml Datei ignoriert wird. Stattdessen wird die Datei managed-schema im selben Ordner verwendet.

Es gibt eine Reihe von Möglichkeiten, dies zu lösen. Sie können den verwalteten Schema Abschnitt Kommentar aus und ersetzen sie durch

<schemaFactory class="ClassicIndexSchemaFactory"/> 

Oder eine andere Art und Weise ist die verwaltete-Schemadatei zu löschen. SOLR liest dann die Datei schema.xml beim Neustart und generiert ein neues verwaltetes Schema. Wenn das funktioniert, sollten Sie Ihre Felder am Ende der Datei sehen.

Weitere Informationen finden Sie unter:

https://cwiki.apache.org/confluence/display/solr/Managed+Schema+Definition+in+SolrConfig