我在
Windows Server 2012上安装了Solr 5.0.0.我想将表中的所有数据加载到solr引擎中.
我的data-config.xml看起来像这样:
<?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>
Indexing completed. Added/Updated: 2 documents. Deleted 0 documents Requests: 1,Fetched: 2,Skipped: 0,Processed: 2
和原始调试响应:
{ "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,"---------------------------------------------" ],"document#2",[ null,"Doe",1984,"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" } }
最后当我要求索尔时
http://localhost:8983/solr/test/query?q=*:*
{ "responseHeader":{ "status":0,"QTime":0,"params":{ "q":"*:*"}},"response":{"numFound":2,"start":0,"docs":[ { "id":"1983","_version_":1497798459776827392},{ "id":"1984","_version_":1497798459776827393}] }}
我也希望看到lastname列.为什么我不能?
解决方法
日志中的警告实际上是真正的问题.
如果您查看solrconfig.xml文件,您将有一个部分:
<schemaFactory class="ManagedindexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory>
这意味着您的schema.xml文件被忽略.而是将使用同一文件夹中的文件managed-schema.
有几种方法可以解决这个问题.您可以注释掉托管架构部分并将其替换为
<schemaFactory class="ClassicIndexSchemaFactory"/>
或者另一种方法是删除托管模式文件.然后,SOLR将在重新启动时读取schema.xml文件并生成新的托管架构.如果可行,那么您应该在文件底部看到您的字段.
有关更多信息,请参阅:
https://cwiki.apache.org/confluence/display/solr/Managed+Schema+Definition+in+SolrConfig