我正在尝试索引数据库中的数据。我成功地做到了这一点。但我有一个问题。我想为整个数据库使用一个索引。所有db表至少有3列具有相同的名称(我想这样)。例如,我有这些表:成员,新成员,书籍,期刊和CD。所有这些都有列名为:id,model,biog。因此,在所有db表中,id(自动递增)从1开始。 当我使用filter(fq = model:journal)查询Solr时,它什么也没有返回。查询书籍会返回一部分数据(我有5行,它返回2.我使用:来检索所有行)。我知道数据在Solr的“数据”文件中。我认为存在某种冲突。 如何在没有任何冲突的情况下为所有这些表创建单个索引?
data-config.xml:
<?xml version="1.0" encoding="utf-8"?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/rental"
user="root"
password="1a2b3c4d"/>
<document>
<entity name="members" pk="id" transformer="HTMLStripTransformer" query="select id, firstname, lastname, biog, model from members">
<field column="id" name="id" />
<field column="firstname" name="firstname" stripHTML="true" />
<field column="lastname" name="lastname" stripHTML="true" />
<field column="biog" name="biog" stripHTML="true" />
<field column="model" name="model" stripHTML="true" />
</entity>
<entity name="new_members" pk="id" transformer="HTMLStripTransformer" query="select id, firstname, lastname, biog, model from new_members">
<field column="id" name="id" />
<field column="firstname" name="firstname" stripHTML="true" />
<field column="lastname" name="lastname" stripHTML="true" />
<field column="biog" name="biog" stripHTML="true" />
<field column="model" name="model" stripHTML="true" />
</entity>
<entity name="books" pk="id" transformer="HTMLStripTransformer" query="select id, title, description, model from books">
<field column="id" name="id" />
<field column="title" name="title" stripHTML="true" />
<field column="description" name="biog" stripHTML="true" />
<field column="model" name="model" stripHTML="true" />
</entity>
<entity name="journals" pk="id" transformer="HTMLStripTransformer" query="select id, title, description, model from journals">
<field column="id" name="id" />
<field column="title" name="title" stripHTML="true" />
<field column="description" name="biog" stripHTML="true" />
<field column="model" name="model" stripHTML="true" />
</entity>
<entity name="cds" pk="id" transformer="HTMLStripTransformer" query="select id, title, description, model from cd">
<field column="id" name="id" />
<field column="title" name="title" stripHTML="true" />
<field column="description" name="biog" stripHTML="true" />
<field column="model" name="model" stripHTML="true" />
</entity>
</document>
</dataConfig>
schema.xml(字段):
<fields>
<field name="id" type="string" indexed="true" stored="true" />
<field name="model" type="text_en" indexed="true" stored="true" />
<field name="firstname" type="text_en" indexed="true" stored="true"/>
<field name="lastname" type="text_en" indexed="true" stored="true"/>
<field name="title" type="text_en" indexed="true" stored="true"/>
<field name="biog" type="text_en" indexed="true" stored="true"/>
</fields>
<uniqueKey>id</uniqueKey>
<defaultSearchField> biog </defaultSearchField>
答案 0 :(得分:2)
你的uniqueKey并不是唯一的,你需要每个实体拥有与其他实体不同的pk,一种简单的方法就是在id上添加一些内容,例如书籍:
query="select CONCAT('b-',id) as id,..."
这种方式,书籍ID将是b-1,b-2,对于具有不同前缀的其他表格也是如此