solr6.6solrj编程,参数意义以及数据导入

这篇博客介绍了solr6.6中solrJ的编程,包括SolrClient的创建方式与solr4.4的区别。详细讲解了solrConfig.xml和managed-schema配置文件的内容,如请求处理方式和动态字段设置。同时,指导如何将数据库数据导入solr索引库,提供了一个参考博客链接。
摘要由CSDN通过智能技术生成

        一,简介

                       前面已经说了solr6.6的配置和管理工具的使用,现在来说下solr6.6api接口编程,solr6.6的api接口编程可以应对java,c#,python这些语言进行编程,本博客以java为例进行说明。同时说明下里面的配置文件solrConfig.xml和managed-schema内容,还有如何从数据库中导入数据到索引库中



                1.solrJ编程

                           关于solr有个官方的pdf文档,里面有关于solr的介绍,以及clientApi的使用,就是sorj编程的使用,连接如下;

                           http://download.csdn.net/detail/k_122/9920894

                          现在说下solrj编程的代码如下

                          

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.DefaultSolrParams;
import org.apache.solr.common.params.HighlightParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.junit.Test;

import com.itheima.bean.Article;


/**
 * 使用solrJ来调用solr服务
 * @author km
 *
 */
public class SolrJ {
	
	 
	/**
	 * 使用solr向索引库添加一条数据
	 * @throws SolrServerException
	 * @throws IOException
	 */
	 @Test
	public void addIndex() throws SolrServerException, IOException{
	
		 //连接的Url
		 String urlString  = "http://localhost:8983/solr/mycore";
		 
		  //创建solr客户端
		 SolrClient solr = new HttpSolrClient.Builder(urlString).build();
		 
		 //创建 SolrInputDocument对象
		// SolrInputDocument document = new SolrInputDocument();
		 
		 //第一种方式添加数据,(使用字段)
		    //添加字段
		    //document.addField("id", "9527");
		   //document.addField("name", "啦啦");
		   //document.addField("content", "solr是个好东西");
		  
		   
		 //添加document
		// solr.add(document);
		 
		 //第二种方式添加数据(使用对象集合)
		 List<Article> list = new ArrayList<Article>();
		 
	
		 for(int i=30;i<=60;i++){
			 
			 Article article = new Article();
			 article.setId(i);
			 article.setName("张芸");
			 article.setTitle("是一个很有文艺范的名字");
			 article.setPrice("1354"+i);
			 article.setContent("亭亭玉立的女孩");
			 
			 list.add(article);
			 
		 }
		    
		     //添加对象集合
		    solr.addBeans(list);
		 
		 
		 
		 //第三种方式添加数据
//		    Article article = new Article();
//		    
//		     article.setId(26);
//		     article.setName("高大上");
//		     article.setTitle("白富美");
//		     article.setContent("高大上白富美");
//		    
//		      
//		     //添加对象
//		      solr.addBean(article);
		     //提交服务器
		    solr.commit();
           
		    
		    
		   
		   
		 
		 
	}
	 
	 
	  //删除索引
	   @Test
	  public void delIndexByID() throws SolrServerException, IOException{
		  
		   String urlString = "http://localhost:8983/solr/mycore";
		   
		   SolrClient solr = new HttpSolrClient.Builder(urlString).build();
		   
		    solr.deleteById("26");
		    
		    solr.commit();
		   
		   
		    
	  }
	   
	   
	   @Test
	   /**
	    * 向索引库添加数据时,如果id和索引库id重复那么就会更新索引库的数据,可以用于更新数据库数据
	    * @throws IOException
	    * @throws SolrServerException
	    */
	  public  void updateIndex() throws IOException, SolrServerException{
		  String urlString = "http://localhost:8983/solr/mycore";
		   
		   SolrClient solr = new HttpSolrClient.Builder(urlString).build();
		   
		      Article article = new Article();
		      
		       article.setId(1);
		       article.setName("张芸");
		       article.setPrice("564");
		       article.setTitle("新名字");
		       article.setContent("好听的新名字");
		       
		       solr.addBean(article);
		       
		       solr.commit();
		   
		   
	  }
	   
	   
	   
	   
	    @Test
	    public void testFind() throws SolrServerException, IOException{
	    	 String urlString = "http://localhost:8983/solr/mycore";
			   
			 SolrClient solr = new HttpSolrClient.Builder(urlString).build(); 
			 
			   
			    //使用这个对象做查询
			    SolrQuery params  = new SolrQuery();  
			    params.setQuery("name:张芸");
			    
			    //分页,默认是分页从0开始,每页显示10行
			    params.setStart(0);
			    params.setRows(30);
			    
			     //开启高亮
			     params.setHighlight(true);
			     //高亮的格式化
			      params.setHighlightSimplePre("<font color='red'>");
			      params.setHighlightSimplePost("</font>");
			      
			      //我需要高亮的字段进行高亮显示
			       //注意这里是hl.fl不是h1.f1;
			       params.setParam("hl.fl", "name");
			    QueryResponse queryResponse =solr.query(params);
			     //拿到数据集合,返回查询结果
			    List<SolrDocument> list =queryResponse.getResults();
			    
			    
			    //拿到所有高亮的结果
			    
               Map<String, Map<String, List<String>>> mapList = queryResponse.getHighlighting();
			    //循环打印数据集合
			    
			    for(SolrDocument solrDocument : list){
			    	 Object id = solrDocument.get("id");
			    	 Object content = solrDocument.get("content");
			    	System.out.println(id.toString());
			    	System.out.println(content.toString());
			    	
			    	
			    	Map<String, List<String>> map = mapList.get(id);
			    	
			        List<String> fieldList = map.get("name");
			        
			        System.out.println(fieldList);
			    	
			    	
			    }
	    }

}


                         来说下和solr4.4的区别主要在于核心api的创建时不同的

                           6.6是用  SolrClient solr = new HttpSolrClient.Builder(urlString).build();来创建的。而4.4是使用SolrServer solr = new HttpSolrServer(urlString);来创建的

                    关于代码的说明。在代码里面都有,mycore是创建的核心,也是你要连接的核心,其他地方没什么不同了。上面的代码就是solrj的编程



                   2.solr的core里面两个配置文件

                            (1).solrConfig.xml

                                  注释太多直接截图了

                                

                                 

                                  这里是加载所用的jar包


                         


 

                   以什么格式返回插叙的数据

                         

                          请求的方式,比如这个就是请求query(查询),当做数据导入时,需要使用这个requestHandle


                    (2)managed-schema

                               solr6.6把配置文件改成了这个,而不是原来的schema.xml但是内容是一样的

                           

                             

                              动态字段如下图

                                  


              动态字段表示,当你向索引库添加数据时,那么只要字段名符合这个格式例如 text_el,那么他就会自动套用该格式的字段



              copyFiled如下图

             


           可以把多个copyField组合成一个字段来使用


                      

               3.导入数据库数据到solr索引库

                    参考这个博客:http://blog.csdn.net/xiejunjie1/article/details/73967810

                       

             

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值