solr学习日志

首先需要下载并解压solr,然后利用cmd进入solr的bin目录下,然后利用solr.cmd start启动。(添加core以及如何使用中文分词,网上教程比较多)
在java中使用:

1.需要在maven中添加相关的solr依赖(主要就是java操作solr的Api包–solrj):

		<dependency>
			<groupId>org.apache.solr</groupId>
			<artifactId>solr-solrj</artifactId>
			<version>6.6.2</version>
		</dependency>

2.需要定义一个接收数据的实体类(需要与solr中的core字段对应,对应字段需要加上@Field)

package cn.Ideal.demo.entity;

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

import java.io.Serializable;

@Data
public class Job implements Serializable {

	private static final long serialVersionUID = 1L;
	@Field
	private String jobName; //岗位
	@Field
	private String companyName;//公司名
	@Field
	private String workAddr;//公司地址
	@Field
	private String salary;//薪水
	@Field
	private String pushDate;//发布日期
	@Field
	private String url;//跳转地址
}

2.然后就是可以构建一个通用的Solr的工具类
初始添加方法:

	public static SolrClient client;
	private static String url;
	static {
		url = "http://localhost:8983/solr/jobs";
		client = new HttpSolrClient.Builder(url).build();
	}
	public static <T> boolean batchSaveOrUpdate(List<T> entities) throws IOException, SolrServerException {
		DocumentObjectBinder binder = new DocumentObjectBinder();
		int total = entities.size();
		int count = 0;
		for (T entity : entities) {
			SolrInputDocument doc = binder.toSolrInputDocument(entity);
			client.add(doc);
			System.out.printf("添加数据到索引中,总共要添加 %d 条记录,当前添加第%d条 %n",total,++count);
		}
		client.commit();
		return true;
	}

分页查询:

	public static QueryResponse query(String keywords, int startOfPage, int numberOfPage) throws SolrServerException, IOException {
		SolrQuery query = new SolrQuery();
		query.setStart(startOfPage);
		query.setRows(numberOfPage);

		query.setQuery(keywords);
		QueryResponse rsp = client.query(query);
		return rsp;
	}

如果想要让关键字高亮的话,也可以采用:

		// 开启高亮
		q.setHighlight(true);
		// 高亮字段
		q.addHighlightField("jobName");
		// 高亮字段
		q.addHighlightField("companyName");
		// 高亮字段
		q.addHighlightField("workAddr");
		// 高亮单词的前缀
		q.setHighlightSimplePre("");
		// 高亮单词的后缀
		q.setHighlightSimplePost("");
		//摘要最长100个字符
		q.setHighlightFragsize(100);

之后就直接利用高亮字段替换查询结果即可。

总体而言:solr使用起来十分的简单易懂,就是如果需要做复杂查询时,还是需要了解熟悉他的query格式。
并且solr和ElasticSearch一样都是通过封装Lucene来进行全文检索的。但是在互联网公司中ElasticSearch的使用率是远大于solr的,可能是因为es有完整的生态链Elastic Stack = logstash + es +kibana + beats + ml + security + report 而solr 目前还是单搜索引擎。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值