java更新solr_java操作solr

直接上代码:

【1】引入jar

org.apache.solr

solr-solrj

4.10.4

junit

junit

4.12

commons-logging

commons-logging

1.1.1

【测试代码】

javabean:

/**

* Created by mis on 2017/5/24.

*/

public class Car implements Serializable {

@Field("id")//注意:这里的字符串id字段要在scheme.xml中有配置体现

private String id;

@Field("name")

private String name;

@Field("price")

private double price;

@Field("url")

private String url;

public Car(){}

public Car(String id, String name, double price,String url){

this.id = id;

this.name = name;

this.price = price;

this.url = url;

}

//getter setter方法

@Override

public String toString() {

return "Car{" +

"id='" + id + '\'' +

", name='" + name + '\'' +

", price=" + price +

", url='" + url + '\'' +

'}';

}

testSolr.java

/**

* Author:lvfang

*

* Created by mis on 2017/5/24.

*/

public class SolrTest {

public final String baseURL = "http://192.168.22.128:8081/solr";

public HttpSolrServer server=null;

@Before

public void init() throws Exception{

server=new HttpSolrServer(baseURL);

}

/**

* 基于索引名添加

* @throws Exception

*/

@Test

public void testAdd() throws Exception{

Car car1 = new Car("Audi000A4001","奥迪A4L",295000,"/images/001.jpg");

//Car car1 = new Car("BMW0000B5001","宝马5系",436800,"/images/002.jpg");

SolrInputDocument doc1 = new SolrInputDocument();

doc1.addField("id",car1.getId());

doc1.addField("name",car1.getName());

doc1.addField("price",car1.getPrice());

doc1.addField("url",car1.getUrl());

server.add(doc1);

server.commit();

System.out.println("操作完成!!!");

}

/**

* 基于bean添加(注意,这里bean的属性要添加solr的注解@Field)

* @throws Exception

*/

@Test

public void testAddBean() throws Exception{

Car car1 = new Car("BMW0000B5001","宝马5系",436800,"/images/002.jpg");

server.addBean(car1);

server.commit();

System.out.println("操作完成!!!");

}

/**

* 批量添加

* @throws Exception

*/

@Test

public void testAddMulti() throws Exception {

List list = new ArrayList();

Car car = null;

for(int i = 0; i < 40; i++){

car = new Car(UUID.randomUUID()+"","宝马"+i+"系",4368*i,"/images/bmw00"+i+".jpg");

list.add(car);

}

server.addBeans(list);

server.commit();

}

/**

* Document结果转换bean

* @throws Exception

*/

@Test

public void change() throws Exception {

SolrDocument doc1 = new SolrDocument();

doc1.addField("id","Siju0032SJ0C8001");

doc1.addField("name","世爵C8");

doc1.addField("price",1370000);

doc1.addField("url","/images/005.jps");

Car car = server.getBinder().getBean(Car.class,doc1);

System.out.println(car);

System.out.println("操作完成!!!");

}

/**

* 删除

* @throws Exception

*/

@Test

public void testDel() throws Exception{

//server.deleteById("1");

server.deleteByQuery("*:*");

server.commit();

System.out.println("操作完成!!!");

}

/**

* 修改(可以理解为重新添加,)

* @throws Exception

*/

@Test

public void testUpdate() throws Exception {

SolrInputDocument doc1 = new SolrInputDocument();

doc1.addField("id","1");

doc1.addField("title","lisi");

server.add(doc1);

server.commit();

System.out.println("操作完成!!!");

}

/**

* 查询

* @throws Exception

*/

@Test

public void testQuery() throws Exception {

SolrQuery query = new SolrQuery("name:*");

//SolrQuery query = new SolrQuery("*:*");

query.setStart(0);//起始页

query.setRows(3);//每页显示数量

QueryResponse rsp = server.query( query );

SolrDocumentList results = rsp.getResults();

System.out.println("总记录数为:" + results.getNumFound());//查询总条数

for(SolrDocument document : results){

System.out.println(document.get("id") + " " + document.get("name") + " " + document.get("price"));

}

}

/**

* 多条件查询

* @throws Exception

*/

@Test

public void testQueryMulti() throws Exception {

ModifiableSolrParams params = new ModifiableSolrParams();

//组织查询条件

params.set("q","*:*");

params.set("start",0);

params.set("rows",10);

params.set("sort","price desc");

QueryResponse response = server.query(params);

SolrDocumentList list = response.getResults();

for(SolrDocument doc : list){

System.out.println(server.getBinder().getBean(Car.class,doc));

}

}

/**

*

* @throws Exception

*/

@Test

public void testQueryCase() throws Exception{

SolrQuery params = new SolrQuery();

//AND OR NOT条件

// params.set("q","name:35系 AND price:152880.0");

// params.set("q","name:5系 OR price:152880.0");

// params.set("q","name:5系 NOT price:152880.0");

//To 条件 min <= price <= max

// params.set("q","price:[130000 TO 160000]");

//To 条件 min < price < max

// params.set("q","price:{130000 TO 160000}");

// params.addFacetQuery("name:宝马");

//显示设置

// params.setHighlight(true);

// params.addHighlightField("name");

// params.setHighlightSimplePre("");

// params.setHighlightSimplePost("");

// params.setHighlightSnippets(1);

// params.setHighlightFragsize(100);

// params.set("start",0);

// params.set("rows",10);

params.set("sort","price desc");

QueryResponse response = server.query(params);

SolrDocumentList list = response.getResults();

for(SolrDocument doc : list){

System.out.println(server.getBinder().getBean(Car.class,doc));

}

}

@After

public void destroy(){

server.shutdown();

server = null;

}

}

b885e598daf2

2017-05-24_113413.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值