6.Solr4.10.3API使用(CURD)
转载请出自出处:http://www.cnblogs.com/hd3013779515/
1.在工程中引入solr-solrj-4.10.3.jar
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.10.3</version>
</dependency>
2.Solr的增删改查
(1)schema.xml配置修改
<field name="stu_name" type="text_ik" indexed="true" stored="true" multiValued="false" /> <field name="stu_sex" type="int" indexed="true" stored="true" multiValued="false" /> <field name="stu_address" type="text_ik" indexed="true" stored="true" multiValued="false" />
(2)Student.java
package cn.ljh.ssm.test;
import org.apache.solr.client.solrj.beans.Field;
public class Student{
@Field("id")
private String id;
@Field("stu_name")
private String name;
@Field("stu_sex")
private int sex;
@Field("stu_address")
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex
+ ", address=" + address + "]";
}
}
(3)HttpSolrServerSingleton.java
package cn.ljh.ssm.test;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
public class HttpSolrServerSingleton {
//solr server URL指的时solr发布到web工程后的访问路径
private final static String SolrURL = "http://192.168.137.168:8080/solr";
//使用懒汉式单例中的静态内部类方式
private static class HttpSolrServerSingletonContainer{
private static HttpSolrServer instance = new HttpSolrServer(
HttpSolrServerSingleton.SolrURL);
}
//solrServer是线程安全的,所以在使用时需要使用单例的模式,减少资源的消耗
public static HttpSolrServer getInstance(){
return HttpSolrServerSingletonContainer.instance;
}
}
(4)SolrHelloWorldTest.java
package cn.ljh.ssm.test; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random; import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test; public class SolrHelloWorldTest { @Test
public void testAdd(){
try {
HttpSolrServer server = HttpSolrServerSingleton.getInstance(); //先删除所有数据
server.deleteByQuery("*:*"); SolrInputDocument doc = new SolrInputDocument();
doc.addField("id",String.valueOf(1));
doc.addField("name","apple phone");
doc.addField("price","6000");
server.add(doc);
SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField("id",String.valueOf(2));
doc2.addField("name","huawei phone");
doc2.addField("price","1000");
server.add(doc2);
SolrInputDocument doc3 = new SolrInputDocument();
doc3.addField("id",String.valueOf(3));
doc3.addField("name","mi phone");
doc3.addField("price","2000");
server.add(doc3); SolrInputDocument doc5 = new SolrInputDocument();
doc5.addField("id",String.valueOf(15));
doc5.addField("name","mi phone02");
doc5.addField("price","2000");
server.add(doc5); Random random = new Random(); for (int i = 0; i < 10; i++) {
SolrInputDocument doc4 = new SolrInputDocument();
doc4.addField("id",i+4);
doc4.addField("name","phone"+i);
doc4.addField("price",random.nextInt(2000));
server.add(doc4); } server.commit();//提交,将所有更新提交到索引中
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 使用POJO添加document
*/
@Test
public void testAddStudent(){
try {
HttpSolrServer server = HttpSolrServerSingleton.getInstance();
List<Student> studentList = new ArrayList<Student>();
Student stu1 = new Student();
stu1.setId("103");
stu1.setName("张小强");
stu1.setSex(1);
stu1.setAddress("北京市海淀区知春路");
studentList.add(stu1); stu1 = new Student();
stu1.setId("104");
stu1.setName("刘小米");
stu1.setSex(0);
stu1.setAddress("北京市海淀区北苑路");
studentList.add(stu1); server.addBeans(studentList);
server.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} @Test
public void testQueryStudent(){
try {
HttpSolrServer server = HttpSolrServerSingleton.getInstance(); String strQuery = "stu_name:小米";//q表示查询的内容
SolrQuery query = new SolrQuery(strQuery); QueryResponse resp = server.query(query); SolrDocumentList sdList = resp.getResults();
long totalResults = sdList.getNumFound();//命中的总记录数 System.out.println("totalResults-->"+totalResults);
for(SolrDocument sd:sdList){
Student student = server.getBinder().getBean(Student.class, sd);
System.out.println(student);
}
} catch (SolrServerException e) {
e.printStackTrace();
}
} @Test
public void testQuery(){
try {
HttpSolrServer server = HttpSolrServerSingleton.getInstance(); String strQuery = "name:apple";//q表示查询的内容
SolrQuery query = new SolrQuery();
query.set("q",strQuery); QueryResponse resp = server.query(query); SolrDocumentList sdList = resp.getResults();
long totalResults = sdList.getNumFound();//命中的总记录数 System.out.println("totalResults-->"+totalResults);
for(SolrDocument sd:sdList){
System.out.print("id:" + sd.getFieldValue("id") +
" " + "name:" + sd.getFieldValue("name") +
" " + "price:" + sd.getFieldValue("price"));
}
} catch (SolrServerException e) {
e.printStackTrace();
}
} @Test
public void testDelete(){
try {
HttpSolrServer server = HttpSolrServerSingleton.getInstance(); server.deleteById("1");
server.deleteByQuery("id:2 id:3"); server.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
6.Solr4.10.3API使用(CURD)的更多相关文章
- Solr4.10.3安装配置
系统环境 window版本为:windows 8.1 64位 软件环境 JDK版本:1.7 solr版本:4.10.3 tomcat版本:tomcat 7 安装过程 步骤一:将下载好的solr-4.1 ...
- Tomcat部署Solr4.10.4
前段时间学习solr,兴致勃勃的从官网下载到solr5.3.0最新版本,然后在后期部署时出现了很多问题.首先,4.0到5.0是个大版本更新,下载 的压缩包的文件结构有了很多变化,导致网上很多关于sol ...
- Win7下Solr4.10.1和MySql的整合(索引与搜索)
1.打开D:\webserver\solr\collection1\conf\solrconfig.xml文件,在<requestHandler name="/select" ...
- Win7下Solr4.10.1和TomCat8的安装
1.系统为win7 64位系统,安装有wamp的环境,我的所有网站放在 d:\webserver下,域名指向该目录下的子目录: 2.安装TomCat8到 D:\Tomcat 8.0: 3.在 d:\w ...
- Solr-4.10.2与Tomcat整合
1.将下载的solr解压至D:\solr,拷贝d:\solr\solr-4.10.2\example\webapps\solr.war到Tomcat的webapps\目录中.直接解压 solr.war ...
- Solr4.10与tomcat整合并安装中文分词器
1.solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引. ...
- tomcat部署solr4.10
1.创建solrHome mkdir /opt/solrHome 2.拷贝solr基础数据 /example/solr/* /opt/solrHome 将contrib和dist两个目录拷贝到/opt ...
- 10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.创建MySQL数据 create database solr; use solr; DROP TABLE ...
- 9.Solr4.10.3数据导入(post.jar方式和curl方式)
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.使用post.jar方式 java -Durl=http://192.168.137.168:8080/s ...
随机推荐
- C# Web 数据注解Data Annotations、模型状态ModelState、数据验证
C#中的模型状态与数据注解,为我们提供了很便利的请求数据的验证. 1. ModelState ModelState在进行数据验证的时候很有用的,它是: 1)验证数据,以及保存数据对应的错误信息. 2) ...
- WebApi实现单个文件的上传下载
上传和下载是很常用的功能了,只有当用到的时候才发现不会写...,经过一番百度.筛选.整理修改后,实现了功能,下面简单的记录下实现方法. 一.上传功能 1.前端代码 上传文件 <input typ ...
- WebForm 【复合控件】
一 复合控件(取值,赋值用法相近) RadioButtonList --单选按钮 (一组列表) <asp:RadioButtonList ID="RadioButtonL ...
- Eclipse中导入外部jar包步骤
昨天,学习了Jar包的打包过程,现在打算记录一下,如何在Eclipse中导入外部Jar包. 第一步:在项目中鼠标右键>>New>>点击Folder. 第二步:在弹出窗口将Fol ...
- Failed to unregister the JMX name: org.apache.commons.dbcp2:name=xxx,type=BasicDataSource
把datesource的bean的class由 org.apache.commons.dbcp2.BasicDataSource 改成 org.apache.tomcat.dbcp.dbcp.Basi ...
- 积分之迷-2015决赛C语言B组第一题
标题:积分之迷 小明开了个网上商店,卖风铃.共有3个品牌:A,B,C. 为了促销,每件商品都会返固定的积分. 小明开业第一天收到了三笔订单: 第一笔:3个A + 7个B + 1个C,共返积分:315 ...
- 使用 Node.js 搭建微服务网关
目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...
- Hibernate中的事务隔离问题(脏读、不可重复读、幻读)
Hibernate中的事务隔离问题(脏读.不可重复读.幻读) 1.事务的特性 事务的四个特性: 1)原子性:事务是进行数据库操作的最小单位,所以组成事务的各种操作是不可分割的 2)一致性:组成事务的各 ...
- 数据库导入导出expdp,impdp
数据库操作 (1)数据库导入导出expdp,impdp 在导入导出数据库的时候,经常会用到exp和imp,在数据量小的情况下可以随意使用,但是当数据量大,表中数据有百万,千万条的时候,就要等好久好久好 ...
- Codeforces485D(SummerTrainingDay01-K)
D. Maximum Value time limit per test:1 second memory limit per test:256 megabytes input:standard inp ...