solr – Data-config.xml和mysql – 我只能加载“id”列

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

当我选择dataimport时,我得到了一个答案:

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

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念