motor engine descargar java mysql search lucene solr

java - engine - solr 6.6 1



Indexación y búsqueda de MySQL con solr (3)

Un campo ''id'' estaba presente en otro lugar del documento. Comenté esto y funcionó.

(He puesto ''en el XML a continuación para que se muestre)

Hola a todos, quiero indexar mi tabla db MySQL con solr. He instalado los componentes / adaptadores java necesarios, etc. Mi base de datos se llama ''test_db'' y la tabla que contiene se llama ''table_tb''. La tabla contiene 2 columnas (campos)

-El campo 1 se llama ''ID'' y es un entero de clave primaria autoincrementado. El campo 2 se llama ''COLA'' y es texto.

La tabla tiene dos filas (registros) ID = 1 e ID = 2 con algún texto en contra de cada uno correspondiente a la segunda columna. Configuré los siguientes archivos conf (están en los directorios correctos):

data-config.xml

<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test_db" user="username" password="db_pwd"/> <document name="doc"> <entity name="test_tb" query="select ID from test_tb"> <field column="ID" name="ID" />   <field column="COLA" name="COLA" /> </entity> </document> </dataConfig>

solrconfig.xml

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

schema.xml

<fields> <field name="ID" type="int" indexed="true" stored="true" required="true"/> <field name="COLA" type="string" indexed="true" stored="true" required="true"/>  </fields> <uniqueKey>ID</uniqueKey>

"[URL]:8983/solr/dataimport?command=full-import" en mi navegador obtengo los siguientes resultados:

(1) salida del navegador (xml)

<response> − <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">1</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">2</str> <str name="Total Documents Skipped">0</str> <str name="Full Dump Started">2010-08-03 16:15:51</str> − <str name=""> Indexing completed. Added/Updated: 0 documents. Deleted 0 documents. </str> <str name="Committed">2010-08-03 16:15:51</str> <str name="Optimized">2010-08-03 16:15:51</str> <str name="Total Documents Processed">0</str> <str name="Total Documents Failed">2</str> <str name="Time taken ">0:0:0.32</str> </lst> − <str name="WARNING"> This response format is experimental. It is likely to change in the future. </str> </response>

Sugiriendo que 2 registros fueron leídos pero no indexados

Salida del lado del servidor

WARNING: Error creating document : SolrInputDocument[{ID=ID(1.0)={1}}] org.apache.solr.common.SolrException: Document [null] missing required field: id WARNING: Error creating document : SolrInputDocument[{ID=ID(1.0)={2}}] org.apache.solr.common.SolrException: Document [null] missing required field: id

¿Alguien sabe lo que estoy haciendo mal?

¡¡¡Gracias de antemano por cualquier ayuda!!!


Necesita tener sincronizado: scheme.xml y lo que está en data-config.xml (la definición de campos debe ser la misma)


<entity name="test_tb" query="select ID from test_tb"> <field column="ID" name="ID" /> <field column="COLA" name="COLA" /> </entity>

debería ser query = "select * from test_tb", creo.

si ejecuta la consulta, seleccione id de test_tb y obtendrá solo una columna mientras desea dos.