solr7安装以及集成ik分词器

今天来研究了一下solr,以及怎么集成ik分词器,把研究的过程记录下来,整个过程是在windows 7系统中完成的。

参考:http://blog.csdn.net/frankcheng5143/article/details/71159936

          http://blog.csdn.net/xiaokang123456kao/article/details/72846591

          https://www.cnblogs.com/zhuxiaojie/p/5764680.html

下载solr7.2.1、ik分词器

1、solr7环境要求

solr7.2.1需要java8环境,且需要在环境变量中添加 JAVA_HOME变量,指向jdk1.8的目录,如下图:

solr7安装以及集成ik分词器_第1张图片

2、下载solr并启动

把下载的solr解压到出来,并通过cmd窗口进入到solr-7.2.1\bin目录,在地址栏中输入cmd,打开命令窗口

solr7安装以及集成ik分词器_第2张图片


solr7安装以及集成ik分词器_第3张图片

输入以下命令运行solr

solr.cmd start

solr7安装以及集成ik分词器_第4张图片

2、打开控制台

在浏览器中输入http://localhost:8983,如果能打开solr控制台界面,说明solr启动成功。

3、创建一个core

我们创建一个articles的集合,输入如下命令:

solr.cmd create -c articles

solr7安装以及集成ik分词器_第5张图片

之后就可以在控制台中看到创建的articles了

solr7安装以及集成ik分词器_第6张图片

4、配置ik分词

1、把下载的ik分词器解压出来,并把下面两个jar包复制到:solr-7.2.1\server\solr-webapp\webapp\WEB-INF\lib里

2、在solr-7.2.1\server\solr-webapp\webapp\WEB-INF目录下新建一个classes目录,把下面三个文件复制进去

solr7安装以及集成ik分词器_第7张图片 solr7安装以及集成ik分词器_第8张图片

3、进入solr-7.2.1\server\solr\articles\conf目录,用记事本或其他文本编辑器打开managed-schema文件,在截图中的位置添加如下代码:

    
        
        
 

solr7安装以及集成ik分词器_第9张图片

4、重新启动solr

关闭:solr.cmd stop -all
启动:solr.cmd start

在控制台中选中articles,并打开Analysis菜单,输入截图中的文字,点击按钮,发现可以分词成功,说明ik分词器安装成功。

solr7安装以及集成ik分词器_第10张图片

5、java操作solr

1、在managed-schema文件中追加以下内容,field 中的name字段要跟java实体对应


  
  
solr7安装以及集成ik分词器_第11张图片

2、pom文件添加如下依赖

 
          
            org.apache.solr
            solr-solrj
            5.5.2
        
        
            junit
            junit
            4.11
        
        
            org.slf4j
            slf4j-log4j12
            1.7.7
        
        
            commons-logging
            commons-logging
            1.1.3
        
        
            org.apache.commons
            commons-lang3
            3.3.2
        
        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.4.2
        
    

3、添加SolrDataDTO.java文件

package solrtest01;

import java.io.Serializable;

import org.apache.solr.client.solrj.beans.Field;

public class SolrDataDTO implements Serializable {

	
	private static final long serialVersionUID = 1L;
	
	@Field("id")
	private Integer id;
	@Field("title")
	private String title;
	@Field("labels")
	private String labels;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getLabels() {
		return labels;
	}
	public void setLabels(String labels) {
		this.labels = labels;
	}
	
}
4、添加SolrUtils 操作solr
package solrtest01;

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

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
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;

public class SolrUtils {
	
	 private String serverUrl = "http://localhost:8983/solr/articles";
	 
	 public void Add(SolrDataDTO dto) throws IOException, SolrServerException{
		 HttpSolrClient client=new HttpSolrClient(serverUrl);
		 SolrInputDocument document=new SolrInputDocument();
		 client.addBean(dto);
		 client.commit();
	 }
	 
	 public List search(String keywords,Integer page, Integer rows ) throws SolrServerException, IOException{
		 HttpSolrClient client=new HttpSolrClient(serverUrl);
		 SolrQuery solrQuery = new SolrQuery(); //构造搜索条件
	        solrQuery.set("q","title:" + keywords); //搜索关键词
	        // 设置分页 start=0就是从0开始,,rows=5当前返回5条记录,第二页就是变化start这个值为5就可以了。
	        solrQuery.setStart((Math.max(page, 1) - 1) * rows);
	        solrQuery.setRows(rows);
	      //执行搜索
	        QueryResponse queryResponse = client.query(solrQuery);
	      //搜索结果
	        SolrDocumentList results = queryResponse.getResults();
	        //总数量
	        long numFound = results.getNumFound();
	        List dataDTOs=new ArrayList();
	        for (SolrDocument solrDocument : results) {
	        	SolrDataDTO dto=new SolrDataDTO();
	        	dto.setId(Integer.valueOf(solrDocument.get("id").toString()));
	        	dto.setLabels(solrDocument.get("labels").toString());
	        	dto.setTitle(solrDocument.get("title").toString());
	        	dataDTOs.add(dto);
			}
	        //List dataDTOs=queryResponse.getBeans(SolrDataDTO.class);
	        System.out.println("查询出来的总量为:"+numFound);
	        return dataDTOs;
	 }
	 
	 public void del() throws SolrServerException, IOException
	 {
		 HttpSolrClient client=new HttpSolrClient(serverUrl);
		 Listids=new ArrayList();
		 ids.add("1");
		 ids.add("2");
		 ids.add("3");
		 ids.add("4");
		 ids.add("5");
		 client.deleteById(ids);
		 client.commit();
	 }
	 
}

5、solr添加数据
SolrUtils solrUtils=new SolrUtils();
	
	@Test
	public void add() throws IOException, SolrServerException
	{
		SolrDataDTO dto=new SolrDataDTO();
		dto.setId(4);
		dto.setTitle("标题4");
		dto.setLabels("动物,羊,马");
		solrUtils.Add(dto);
		
		dto.setId(5);
		dto.setTitle("标题5");
		dto.setLabels("公交,地铁,飞机");
		solrUtils.Add(dto);
	}

6、打开solr控制台查看数据,发现数据写入成功

solr7安装以及集成ik分词器_第12张图片

7、我们在labels字段上使用了ik分词器,效果如下

solr7安装以及集成ik分词器_第13张图片


solr7安装以及集成ik分词器_第14张图片


你可能感兴趣的:(solr)