你的位置:首页 > 软件开发 > Java > SOLR对多个(关联)表创建索引

SOLR对多个(关联)表创建索引

发布时间:2015-10-24 14:00:11
又两天没写博客,关于SOLR的东西,写了一周了还没写完我也是醉了,毕竟会的东西真不多,周四晚上加班没写,周五晚上公司同事聚会也没写,今天在家,还是把最后的一点写完吧,我会的剩下的也就是一个对多个表创建索引了,表可以是关联的,也可以是不关联的,下面开始。一、无关联多表创建索引1.1 ...

  又两天没写博客,关于SOLR的东西,写了一周了还没写完我也是醉了,毕竟会的东西真不多,周四晚上加班没写,周五晚上公司同事聚会也没写,今天在家,还是把最后的一点写完吧,我会的剩下的也就是一个对多个表创建索引了,表可以是关联的,也可以是不关联的,下面开始。

一、无关联多表创建索引

1.1数据库准备

  首先在数据库创建一张表,本来有一个tuser表了,我又创建了一个role表,就两三个字段,没什么特殊的,然后在里面随便添加几条数据即可,看一下数据库:

SOLR对多个(关联)表创建索引

1.2data-config.

  数据库创建完成之后就是修改data-config.

SOLR对多个(关联)表创建索引

在<document></document>标签中间在添加一个<entity>标签即可,然后把对应的字段添加到中间就可以了,但是要注意几点:

注意:

  1.<entity>标签的name属性,该属性用来区分不同的entity,所以不能和其他的entity标签的name相同。

  2.pk属性,数据库中表的主键是什么,那么pk属性的值就是什么,不能改变。

  3.第三点很重要,首先,我们再schema.,这个配置代表着solr创建索引时对于id的值具有唯一性,就像数据库表的主键一样不能重复,在数据库中主键重复会报错,但是solr创建索引时,如果id的值重复,那么后面创建的索引会覆盖前面创建的索引,我们平时创建表时主键id一般都是int类型自增的,这样的话两个表的id值很可能相同,那么就会发生索引覆盖的情况。那么怎么解决呢?一个办法是主键id使用uuid的方式,这样肯定不会重复的,也就不会发生索引覆盖的情况了。但是我们大多数情况下还是使用自增的方式作为id,我在网上查了下,有人直接在schema.uniqueKey属性的值,以此来达到索引不覆盖的目的,但是这两种方式我都没有尝试过,大家有兴趣的可以自己去尝试一下。

  4.在该文件中可以配置多个dataSource,也就是说如果你两张表不在一个数据库,那么你也可以同时对这两张表创建索引,只需要将表和数据源对应上就可以了,方式如下:

SOLR对多个(关联)表创建索引

  按照上面的方式配置完成之后,启动tomcat,访问localhost:8080/solr页面,重新创建索引,创建完的索引如下所示:

原标题:SOLR对多个(关联)表创建索引

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录