设为首页 收藏本站
查看: 1158|回复: 0

[经验分享] solr索引数据库

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-12-18 19:10:15 | 显示全部楼层 |阅读模式
  1.创建sql

DSC0000.gif DSC0001.gif   

SET FOREIGN_KEY_CHECKS=0;  

  
DROP TABLE IF EXISTS `user`;
  

  
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userName` varchar(50) DEFAULT NULL,
  `userAge` int(11) DEFAULT NULL,
  `userAddress` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
  
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
  

  

  
INSERT INTO `user` VALUES ('1', 'summer', '30', 'shanghai');
  
INSERT INTO `user` VALUES ('2', 'test1', '22', 'suzhou');
  
INSERT INTO `user` VALUES ('3', 'test1', '29', 'some place');
  
INSERT INTO `user` VALUES ('4', 'lu', '28', 'some place');
  
INSERT INTO `user` VALUES ('5', 'xiaoxun', '27', 'nanjing');
  


View Code  2. 配置D:\Solr\solr-4.10.3\example\solr\collection1\conf\solrconfig.xml
  在<requestHandler name="/select">前面加上dataimport的处理的Handler
  

<requestHandler name="/dataimport">  
       <lst name="defaults">
  
          <str name="config">data-config.xml</str>
  
       </lst>
  
  </requestHandler>
  

  3.在同目录下添加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/mybatis" user="root" password="luxx" batchSize="-1" />  
  <document name="testDoc">
  <entity name="user" pk="id"
  query="select * from user">
  
            <field column="id" name="id"/>
  
           <field column="userName" name="userName"/>
  <field column="userAge" name="userAge"/>
  <field column="userAddress" name="userAddress"/>
  
     </entity>
  
  </document>
  
</dataConfig>
  

  dataSource是数据库数据源。
  Entity就是一张表对应的实体,pk是主键,query是查询语句。
  Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。
  4.修改同目录下的schema.xml,这是Solr对数据库里的数据进行索引的模式
  (1)保留_version_ 这个field
  (2)添加索引字段:这里每个field的name要和data-config.xml里的entity的field的name一样,一一对应。
  

<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />  

  
<!--<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false"/> -->
  

  
<field name="userName" type="text_general" indexed="true" stored="true" />
  

  
<field name="userAge" type="int" indexed="true" stored="true" />
  

  
<field name="userAddress" type="text_general" indexed="true" stored="true" />
  

  (3)设置唯一主键:<uniqueKey>id</uniqueKey>,注意:Solr中索引的主键默认是只支持type="string"字符串类型的,而我的数据库中id是int型的,会有问题,解决方法:修改同目录下的elevate.xml,注释掉下面2行,这貌似是Solr的Bug,原因不明
  <doc />
  

<doc exclude="true" />  (4)拷贝mysql-connector-java-5.1.22-bin.jar和solr-dataimporthandler-4.10.3.jar到
  D:\Solr\solr-4.10.3\example\solr-webapp\webapp\WEB-INF\lib。一个是mysql的java驱动,另一个在D:\Solr\solr-4.10.3\dist目录里,是org.apache.solr.handler.dataimport.DataImportHandler所在的jar。
5.创建实体类  


  

package com.sishuok;  

  

import org.apache.solr.client.solrj.beans.Field;  

  

public>
  @Field
private int>@Fieldprivate String username;  @Field
private String password;  

public int getId() {return>}  

public void setId(int>this.id =>}  

public String getUsername() {return username;  }
  

public void setUsername(String username) {this.username = username;  }
  

public String getPassword() {return password;  }
  

public void setPassword(String password) {this.password = password;  }
  

  @Override
public String toString() {return "User [id=" +>}  

  
}
  


View Code  6.添加

  

/**  * 添加索引
  *
  *
@throws IOException  *
@throws SolrServerException*/  @Test
public void test4() throws Exception {  User user
=new User();  user.setId(
1);  user.setPassword(
"1234");  user.setUsername(
"tom4");  server.addBean(user);
  server.commit();
  }
  


View Code  7.查询

  

/**  * 查询索引
  *
  *
@throws IOException  *
@throws SolrServerException*/  @Test
public void test5() throws Exception {  SolrQuery query
= new SolrQuery();  query.setQuery(
"*:*");  query.setStart(
0);  query.setRows(
10);  QueryResponse response
= server.query(query);  SolrDocumentList solrDocumentList
= response.getResults();  System.out.println(
"查询的条数为: " + solrDocumentList.getNumFound());for (SolrDocument solrDocument : solrDocumentList) {  System.out.println(
"id: " + solrDocument.get("id"));  System.out.println(
"username: " + solrDocument.get("username"));  System.out.println(
"password: " + solrDocument.get("password"));  }
  }
  


View Code  参考连接:http://www.cnblogs.com/luxiaoxun/p/4442770.html
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425478-1-1.html 上篇帖子: solr 服务器管理界面 下篇帖子: solr管理界面详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表