SOLR对多个(关联)表创建索引
又两天没写博客,关于SOLR的东西,写了一周了还没写完我也是醉了,毕竟会的东西真不多,周四晚上加班没写,周五晚上公司同事聚会也没写,今天在家,还是把最后的一点写完吧,我会的剩下的也就是一个对多个表创建索引了,表可以是关联的,也可以是不关联的,下面开始。
一、无关联多表创建索引
1.1数据库准备
首先在数据库创建一张表,本来有一个tuser表了,我又创建了一个role表,就两三个字段,没什么特殊的,然后在里面随便添加几条数据即可,看一下数据库:
1.2data-config.xml
数据库创建完成之后就是修改data-config.xml文件了,因为数据库跟solr之间的关联主要就是建立在这个文件上面的,所以接下来就是修改该文件了,我已经写好了,下面直接贴出来看一下即可:
在<document></document>标签中间在添加一个<entity>标签即可,然后把对应的字段添加到中间就可以了,但是要注意几点:
注意:
1.<entity>标签的name属性,该属性用来区分不同的entity,所以不能和其他的entity标签的name相同。
2.pk属性,数据库中表的主键是什么,那么pk属性的值就是什么,不能改变。
3.第三点很重要,首先,我们再schema.xml中配置有这样的属性uniqueKey属性的值,以此来达到索引不覆盖的目的,但是这两种方式我都没有尝试过,大家有兴趣的可以自己去尝试一下。
4.在该文件中可以配置多个dataSource,也就是说如果你两张表不在一个数据库,那么你也可以同时对这两张表创建索引,只需要将表和数据源对应上就可以了,方式如下:
1.3.修改schema.xml
将表中需要创建索引的字段添加到该文件中即可,注意,两个表中相同的字段就可以不用再添加了,比如,两个表中都有id,那么id字段只写一次就可以了。
按照上面的方式配置完成之后,启动tomcat,访问localhost:8080/solr页面,重新创建索引,创建完的索引如下所示:
我数据库中两个表一共只有8条数据,创建的索引也是8条,关于id的事,只要两个表中的id不重复,那么就不会发生索引覆盖的事,所以我这里只是简单做一个例子,关于索引覆盖的事大家可以按照我上面说的几种方法操作就可以了,当然有更好的方法更好了。
二、关联表创建索引
至于关联表创建索引和单表创建索引差不多,本来我是想单独创建几个表,然后再一点一点写出来,但是突然想起来前两天有个朋友给我评论说我写的东西完全看不明白,所以我想这次试试直接使用官方提供的例子来写,什么意思呢?就是把官方文档上的内容粘贴过来试试,其实官方文档写的更好。
2.1.数据库配置
2.2.data-congfig.xml配置
除了上面那种方式,官方文档还给出了另外一种方式,但是这种方式我没用过,下面我把那种方式贴出来,也把官方文档的解释贴出来,大家可以自己看着使用吧,不过我还是喜欢使用上面的这种方式:
官方的解释是这样的:
In the above example, there are mappings of fields to Solr fields. It is possible to totally avoid the field entries in entities if the names of the fields are same (case does not matter) as those in Solr schema. You may need to add a field entry if any of the built-in Tranformers are used (see Transformer section)
接下来还是修改schema.xml文档,把需要创建索引的字段放到该文件中即可。
多表创建索引的方式我就介绍完了,虽然写的很粗糙,但是应该还有点用吧,更多的内容大家可以自己去查看官方文档的http://wiki.apache.org/solr/DataImportHandler这个地方,至于有人说都是英文看不懂,关于这个问题我想说的是其实我英文也是半吊子,但是借助一些翻译工具还是能看一点的,看的多了就看的懂了,不要怕看英文,坚持看下去总能看的懂的,就算你看不全懂,至少能明白大概说的什么意思就行啊,带蒙带猜的,这都不是事。
另外关于solr的其他东西我就暂时不不写了,一方面是因为我研究这个时间也不长,有些东西我也不是太懂,目前只能算是刚刚入门吧,另一方面,本来要用solr的项目又说不用了,新开的项目也是比较紧急,所以关于solr的东西也只好暂时先放下了,以后再用到的时候再捡起来继续吧。恩,暂时就这样了。
SOLR对多个(关联)表创建索引的更多相关文章
- Mysql建表+创建索引
创建表时可以直接创建索引,这种方式最简单.方便.其基本形式如下: CREATE TABLE 表名( 属性名 数据类型[完整性约束条件], 属性名 数据类型[完整性约束条件], ...... 属性名 数 ...
- Lucene学习之一:使用lucene为数据库表创建索引,并按关键字查询
最近项目中要用到模糊查询,开始研究lucene,期间走了好多弯路,总算实现了一个简单的demo. 使用的lucene jar包是3.6版本. 一:建立数据库表,并加上测试数据.数据库表:UserInf ...
- CoreData 从入门到精通(三)关联表的创建
上篇博客中讲了 CoreData 里增删改查的使用,学到这里已经可以应对简单的数据存储需求了.但是当数据模型复杂起来时,例如你的模型类中除了要存储 CoreData 里支持的数据类型外,还有一些自定义 ...
- oracle 创建索引思考(转)
在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索 ...
- SQL语句-创建索引
语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100 GO USE 库名GO IF EXISTS (SELECT * FRO ...
- SQL Server创建索引(转)
什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...
- SQL Server创建索引
原文:SQL Server创建索引 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的 ...
- (转)SQL Server创建索引
什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音.笔 ...
- SQLSERVER 创建索引实现代码
是SQL Server编排数据的内部方法.它为SQL Server提供一种方法来编排查询数据 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数 ...
随机推荐
- ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
程序连接orarle报ORA-12505错误 一.异常{ ORA-12505, TNS:listener does not currently know of SID given in connect ...
- 在Firefox中发现一个在Linux下查看chm文档的插件
在Firefox浏览器插件中搜索插件chmfox插件,安装后就可以在linux下通过Firefox浏览器阅读chm文档了.
- 非关联容器|hash|unordered_map/multimap,unordered_set/multiset
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 多线程pre
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 『转』市售热门可穿戴式“活动追踪器 Tracker”导购指南
充足的运动对于幸福的生活来说是至关重要的,但很多人总是找不到足够的时间运动,所以远远达不到日常需要的运动标准.这就是为什么今天活动跟踪器成为了热门话题,尤其是对于注重健康的消费者来说.除BodyMed ...
- linux下部署tomcat服务器之安装tomcat
下载tomcat压缩包 apache-tomcat-7.0.82.tar.gz 在把包放到linux 的softwore文件夹下 自己选择文件夹 tar -zxvf apache-tomcat-7. ...
- jquery3.1.1报错Uncaught TypeError: a.indexOf is not a function
jquery3.1.1报错Uncaught TypeError: a.indexOf is not a function 使用1.9就没有问题,解决办法: 就是把写的代码中: $(window).lo ...
- 5.4完成其他模块的xadmin后台注册
courses adminx.py from .models import Course, Lesson, Video, CourseResource import xadmin class Cou ...
- react中findDOMNode
在使用react过程中,大家有时会那么这里的findDomNode是做什么的呢? import { findDomNode } from 'react-dom'; 简单来说是用来得到实际Dom的,因为 ...
- 一个Android开发妹子的找工作心酸史
阿里:实习二面被KO 1,人生接到的第一个电话面试来自大家都说好的阿里,心情激动,说话颤抖,本以为没有戏,然而第二天接到了二面的电话有点小激动.然后就是被ko了,死的原因很简单,那时候单纯的自己什么都 ...