2017-09-25 101 views
0

嗨我想索引mysql数据库solr。但它唯一的索引ID。我尝试了很多。但没有成功。但我试图在同一个数据库中测试地理位置并进行测试,并成功将所有城市编入索引。我只知道什么是错过的。该查询包含一些产品的描述,例如“Solr不返回从MySQL索引的结果”。Solr不索引mysql数据库

我的数据库配置

<entity name="geo" 
    pk="id" 
    query="select id, title from `inlive`" 
    deltaImportQuery="select id, title from `inlive`" 
    deltaQuery="select id, title from `inlive`" 
    > 
     <field column="id" name="id"/> 
     <field column="title" name="title"/> 
    </entity> 

架构

<?xml version="1.0" encoding="UTF-8" ?> 
<uniqueKey>id</uniqueKey> 
<schema name="geo" version="1.5"> 
    <field name="_version_" type="long" indexed="true" stored="true"/> 
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="title" type="string" indexed="true" stored="true" multiValued="false" required="true" /> 
</schema> 

结果

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":3, 
    "params":{ 
     "q":"*:*", 
     "indent":"on", 
     "wt":"json", 
     "_":"1506369405758"}}, 
    "response":{"numFound":2,"start":0,"docs":[ 
     { 
     "id":"1", 
     "_version_":1579543508130201600}, 
     { 
     "id":"2", 
     "_version_":1579543508218281984}] 
    }} 

调试

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 275 
    }, 
    "initArgs": [ 
    "defaults", 
    [ 
     "config", 
     "data-config.xml" 
    ] 
    ], 
    "command": "full-import", 
    "mode": "debug", 
    "documents": [ 
    { 
     "id": [ 
     1 
     ], 
     "_version_": [ 
     1579544391043776500 
     ] 
    }, 
    { 
     "id": [ 
     2 
     ], 
     "_version_": [ 
     1579544391046922200 
     ] 
    } 
    ], 
    "verbose-output": [ 
    "entity:geo", 
    [ 
     "document#1", 
     [ 
     "query", 
     "select id, title from `inlive`", 
     "time-taken", 
     "0:0:0.10", 
     null, 
     "----------- row #1-------------", 
     "id", 
     1, 
     "title", 
     "test title", 
     null, 
     "---------------------------------------------" 
     ], 
     "document#2", 
     [ 
     null, 
     "----------- row #1-------------", 
     "id", 
     2, 
     "title", 
     "test title 2", 
     null, 
     "---------------------------------------------" 
     ], 
     "document#3", 
     [] 
    ] 
    ], 
    "status": "idle", 
    "importResponse": "", 
    "statusMessages": { 
    "Total Requests made to DataSource": "1", 
    "Total Rows Fetched": "2", 
    "Total Documents Processed": "2", 
    "Total Documents Skipped": "0", 
    "Full Dump Started": "2017-09-25 20:21:57", 
    "": "Indexing completed. Added/Updated: 2 documents. Deleted 0 documents.", 
    "Committed": "2017-09-25 20:21:57", 
    "Optimized": "2017-09-25 20:21:57", 
    "Time taken": "0:0:0.255" 
    } 
} 
+0

你错过'实体'结束标签,并且您确保在更改后重新加载配置? – MatsLindh

+0

实体关闭标签已经存在于此中。代码编辑器错过了关闭标签。任何想法缺少什么? –

+0

我发现了这个问题。当我使用 它的索引。但我需要用title attibute来索引它。 –

回答

0

最后我发现这个solr的问题。

正在使用solr 6.6 所以我必须按照本教程中的链接http://makble.com/how-to-index-mysql-data-in-solr将托管架构重命名为架构。我还做了一次地理城市的测试。默认情况下,它将托管模式作为主架构,它使用了我的旧测试模式字段。它没有获取schema.xml。

因此,解决办法是需要定义schema.xml中

<schemaFactory class="ClassicIndexSchemaFactory"/> 

参考链接:Data-config.xml and mysql - I can load only "id" column

或重命名托管模式,以SCHEMA.XML或删除管理型模式