首页 > 其他 > 详细

SOLR搜索服务 基础

时间:2020-09-28 14:58:30      阅读:26      评论:0      收藏:0      [点我收藏+]

1,SolrJ之HttpSolrClient 

  旧版本的连接服务HttpSolrServer在solr5版本后已经停用,被新的HttpSolrClient取代,大家可以从下面的url中查看相关的API,了解更详细的变动。
  HttpSolrClient server=new HttpSolrClient(url);
  //设置对应请求的目标主机线程数为1000条
  server.setDefaultMaxConnectionsPerHost(1000); server.setMaxTotalConnections(10000);
  server.setConnectionTimeout(60000);//设置连接超时时间(单位毫秒) 1000
  server.setSoTimeout(60000);//// 设置读数据超时时间(单位毫秒) 1000
  server.setFollowRedirects(false);//遵循从定向
  server.setAllowCompression(true);//允许压缩


  API:http://lucene.apache.org/solr/5_3_1/solr-solrj/index.html

 2,solr添加索引

  HttpSolrClient server = SolrServer.getServer();
  SolrInputDocument doc = new SolrInputDocument();
  doc.addField("id", "123456");
  doc.addField("title_s", "test");
  doc.addField("des_s", "test des");
  try {
    server.add(doc);
    server.commit();
  } catch (Exception e) {
    e.printStackTrace();
  }

  Id:索引中的唯一ID,定义见配置。title_s:动态字符串域定义,静态见配置。

3,Solr查询索引 

  HttpSolrClient server = SolrServer.getServer();
  SolrQuery sQuery = new SolrQuery();
  sQuery.setQuery(str); // 默认*:* , des_s:xxx , 具体见查询语法
  //sQuery.set("q", "des_s:test*");// 查询nickname是已chm开头的数据
  sQuery.setStart(0); // 检索偏移量
  sQuery.setRows(5); // 返回行数
  QueryResponse queryResponse;
  try {
    queryResponse = server.query(sQuery);
    SolrDocumentList list = queryResponse.getResults();
    System.out.println("query result nums: " + list.getNumFound());
    for (int i = 0; i < list.size(); i++) {
      System.out.println(list.get(i).getFieldValue("des_s"));
    }
  } catch (Exception e) {
    e.printStackTrace();
  }

4,solr删除索引

  HttpSolrClient server = SolrServer.getServer();
  server.deleteById(“123456”); // 单个id
  server.commit();

  HttpSolrClient server = SolrServer.getServer();
  List<String> ids = new ArrayList<String>();
  ids.add(“123456”); // id的集合
  server.deleteById(ids);
  server.commit();

5,SolrBean

  @Field注解:指定Bean的一个字段为Field,schema.xml配置必须有这个field,不然会报错

  public class TestBO implements Serializable{
    private static final long serialVersionUID = 1L;
    @Field
    public String id;
    @Field
    public String title_s;
    @Field
    public String des_s;
  }

  SolrBean添加索引

  HttpSolrClient server = SolrServer.getServer();
  List<TestBO> beans = new ArrayList<TestBO>();
  TestBO bo = new TestBO();
  bo.setId("111111");
  bo.setTitle_s("helo world.");
  bo.setDes_s("test bean.");
  beans.add(bo);
  try {
    server.addBeans(beans);
    server.commit();
    System.out.println("----索引创建完毕!!!----");
  } catch (Exception e) {
    e.printStackTrace();
  }

  SolrBean查询索引

  HttpSolrClient server = SolrServer.getServer();
  SolrQuery sQuery = new SolrQuery();
  sQuery.setQuery(str);
  sQuery.setStart(0);
  sQuery.setRows(5);
  QueryResponse queryResponse;
  try {
    queryResponse = server.query(sQuery);
    List<TestBO> indexBOLists = queryResponse.getBeans(TestBO.class);
    System.out.println("----------------------------" + indexBOLists.size());
    for (TestBO bo : indexBOLists) {
      System.out.println(bo.getDes_s());
    }
  } catch (Exception e) {
    e.printStackTrace();
  }

  SolrBean删除索引

  try {
    HttpSolrClient server = SolrServer.getServer();
    server.deleteByQuery(condition);
    //server.deleteById(id);
    server.commit();
    System.out.println("清理完毕!");
  } catch (SolrServerException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }

SOLR搜索服务 基础

原文:https://www.cnblogs.com/longlonggao/p/13744455.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!