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

        一,简介

                       前面已经说了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
list = new ArrayList
(); 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(""); params.setHighlightSimplePost(""); //我需要高亮的字段进行高亮显示 //注意这里是hl.fl不是h1.f1; params.setParam("hl.fl", "name"); QueryResponse queryResponse =solr.query(params); //拿到数据集合,返回查询结果 List list =queryResponse.getResults(); //拿到所有高亮的结果 Map>> 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> map = mapList.get(id); List 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

                                  注释太多直接截图了

                                 solr6.6solrj编程,参数意义以及数据导入_第1张图片

                                 

                                  这里是加载所用的jar包


                          solr6.6solrj编程,参数意义以及数据导入_第2张图片


 

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

                          solr6.6solrj编程,参数意义以及数据导入_第3张图片

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


                    (2)managed-schema

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

                            solr6.6solrj编程,参数意义以及数据导入_第4张图片

                             

                              动态字段如下图

                                   solr6.6solrj编程,参数意义以及数据导入_第5张图片


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



              copyFiled如下图

             


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


                      

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

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

                       

             

你可能感兴趣的:(solr6.6solrj编程,参数意义以及数据导入)