solr的高级使用

全文检索服务器

1Solrj的使用
1.1什么是solrj
SolrJ是操作Solr的JAVA客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底层是通过使用HttpClient中的方法来完成Solr的操作。

1.2搭建工程
Solrj的依赖包和核心包
D: \solr\solr-7.1.0\dist\solrj-lib 所有的jar包

D: \solr\solr-7.1.0\dist\solr-solrj-7.1.0.jar

Solr的扩展服务包
D:\guoweixin\solr\solr-7.1.0\server\lib\ext

对于用Maven构建的项目, pom.xml配置:

org.apache.solr solr-solrj 7.1.0

1.3使用solrj完成索引维护
1.3.1Java对象绑定
SolrJ提供两个有用的接口,UpdateResponse 和 QueryResponse,它们可以很方便的处理特定域的对象,可以使您的应用程序更容易被理解。SolrJ支持通过@Field注解隐式转换文档与任何类。
每个实例变量在Java对象可以映射到一个相应的Solr字段中,使用 field注解。

查看data-config.xml配置:

@Data
public class Products {
@Field(“id”)
private String pid;

@Field(“prod_pname”)
private String pname;

private String catalog;

@Field(“prod_catalog_name”)
private String catalogName;

@Field(“prod_price”)
private double price;

private Integer number;

@Field(“prod_description”)
private String description;

@Field(“prod_picture”)
private String picture;
private Date releaseTime;
}

1.3.2添加/修改索引
在solr中,索引库中都会存在一个唯一键,如果一个Document的id存在,则执行修改操作,如果不存在,则执行添加操作。

1.3.3删除索引
1.3.3.1根据指定ID来删除

1.3.3.2根据条件删除

1.3.4查询索引
1.3.4.1简单查询

1.3.4.2复杂查询
1.3.4.2.1solr的查询语法
1.q查询关键字,查询所有使用*😗。
请求的q是字符串

多个条件可以:之间用 AND 或 OR 关联

2.fq (filter query)过滤查询,作用:在q查询符合结果中同时是fq查询符合的,例如:
请求fq是一个数组(多个值)(默认是and)

如果多选相同的类别 : prod_catalog_name:魅力女人 or 手机饰品

过滤查询价格从1到1的记录。
也可以在“q”查询条件中使用product_price:[1 TO 20],如下:

也可以使用“*”表示无限,例如:
10以上:
10以下:

3.sort 排序,格式:sort=+<desc|asc>[,+<desc|asc>]…. 示例:
按价格降序
4.start - 分页显示使用,开始记录下标,从0开始
5.rows - 指定返回结果最多有多少条记录,配合start来实现分页。
实际开发时,知道当前页码和每页显示的个数最后求出开始下标。
6.fl - 指定返回那些字段内容,用逗号或空格分隔多个(回显)

7.df-指定一个搜索默认Field

8.wt - (writer type)指定输出格式,

9.hl 是否高亮 ,设置高亮Field,设置格式前缀和后缀。

hl.fl 指定高亮域的名称

1.3.4.2.2代码

2电商模仿案例
2.1需求(模仿淘宝或京东)
使用Solr实现电商网站中商品信息搜索功能,可以根据关键字、分类、价格搜索商品信息,也可以根据价格进行排序,同时还可以分页。

2.1.1架构分析
Solrj服务器:
提供搜索和索引服务

2.2工程搭建

2.2.1Spring整合Solr:

2.2.2SpringBoot整合Solr
Pom.xml

org.springframework.boot
spring-boot-starter-data-solr

Application.yml
spring:
data:
solr:
host: http://localhost:9080/solr/core_jd
Service
@Autowired
SolrClient solrClient;

2.3代码实现
2.3.1Pojo

2.3.2Service
Service接口

Service实现类

多选:prod_catalog_name:幽默杂货 or prod_catalog_name:手机饰品

2.3.3Controller

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值