你的位置:首页 > Java教程

[Java教程]SOLR增量索引


  昨天写了SOLR服务的部署和全量索引的建立,今天继续说一下SOLR增量索引的问题,什么是增量索引呢?就是不必对数据库中的全部数据全部做索引,而是仅仅对上次创建索引到当前时间之间数据库数据发生的变化,对发生变化 的这部分数据创建索引,并且上次创建的索引并不发生变化。创建增量索引的对象包括数据库在这段时间之间新增的数据或者修改的数据或者假删除的数据,下面先说对增加或者修改的数据创建增量索引;

  首先,在我的F:\SOLR_HOME\collection1\conf文件夹中有一个dataimport.properties文件,打开该文件可以看到如下信息:

在这可以看到last_index_time属性,显示的时间是昨天下午的三点二十七分二十三秒,也就是说我上次创建索引的时间是2015-10-18 15\:27\:23,我们先记着这个时间,再看一下数据库的数据:

表数据创建的时间也是昨天下午的,那么怎么配置才能让你在数据库增加数据之后,这些数据自动添加到你的索引里面而不用对数据库中的所有数据重新创建索引呢?下面就是见证奇迹的时刻。

  一、数据库表添加timestamp类型字段

  在数据库表中添加UpdateTime字段,当然这个名字你可以随便起,没有什么影响,这个字段的类型是timestamp,可以给一个默认值是CURRENT_TIMESTAMP(这是MYSQL的,ORACLE可能需要改变,我不熟悉ORACLE,所以你懂的)。

  二、修改data-config.

  UserID='${dih.delta.UserID}'",这里大家一定要注意一下,我刚开始写的时候这里没注意随便写了,后来找了好久才找到问题。

  三、修改schema.

  这两个jar文件放到了D:\apache-tomcat-7.0.63\webapps\solr\WEB-INF\lib文件夹下面了,做数据导入这两个jar必不可少,所以我还是再说一下比较好。等下做定时增量导入的时候还需要另外一个jar文件,到时候再说。

  五、数据库添加数据

  下面我就在数据库中新增几条数据,如下所示:

一共增加了三条数据,为了区别上面的古人,我添加了三条现代人,大家对付着看吧。

  六、启动Tomcat,访问solr页面

  启动tomcat后,访问localhost:8080/solr,进入collection1,点击Dataimport按钮,进入如下页面:

数据库我添加完数据之后就是15条数据,现在的索引也是15条,这是对应的,下面我重新再数据库中添加几条数据,然后重新创建增量索引:

此时去Query页面查询如下:

可以发现此时索引数据变成了17条,说明我们的增量索引好使了,有人会说你的索引数是变了,但是谁知道我发哥你给加进来了吗?OK,下面我们查询一下发哥的索引,查询方法如下:

solr的分词器把周润发分词成为了"周"、"润"、"发"三个字,索引查的时候会把包含这三个字的内容都给查出来,索引查发哥的时候才把星爷也给搞出来了,这个实非我之过也。

  本来想把定时增量索引也给写了,但是还得去看EasyUI的教程,所以明天再写吧,明天把删除的增量索引还有定时一起给写了,还有分词器,应该就是这三个内容,后天可能会写solrJ操作索引,其实也就是CRUD,我会的暂时也就是这些了,对了,还有一个multicore,但是这个我暂时没有做例子,我先做个例子,如果可以再给大家写出来,其他的以后用到了再说吧。

  恩,暂时就这样,有说的不对的地方欢迎大家指正。