关于solr--多表插入索引覆盖问题
问题描述:如果在solr中添加数据库中表数据:在solrhome中配置solrconfig.mxl文件,添加一个requestHandler。
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
创建一个data-config.xml,保存到solrhome下的一个solrcore---->collection1\conf\目录下加入如下配置(
solrcore相当于mysql中一个数据库
)
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/lucene"
user="root"
password="root"/>
<document>
<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<field column="catalog_name" name="product_catalog_name"/>
<field column="price" name="product_price"/>
<field column="description" name="product_description"/>
<field column="picture" name="product_picture"/>
</entity>
</document>
这样重启tomcat--->选中collection1------>dataimport添加数据库索引即可,但是如果添加另外一张表id也是从1开始,则继续引入索引,会覆盖原原有相同id的索引。想要解决这个问题
需要将这个sql语句进行如下修改即可 将原有的pid的sql语句改为concat("book_",pid)
得到的结果为
可以看出这样在索引前加上前缀,则课解决id重复问题,就不会在覆盖原有的索引,并且,此时数据库的id并没有改变,只是将索引id更改