java solr schema_Solr的配置和在java中的使用

Solr是一个全局站内搜索引擎,可以快速的搜索出结果。

Solr依赖于tomcat,把Solr的war包放到tomcat中即可运行。

使用solr,需要在solr的schema.xml中配置solr与java的映射关系,便于存放数据,在schema.xml中配置如下关系。

Solr与Spring的集成

添加支持solr客户端的依赖

org.apache.solr

solr-solrj

4.10.3

在Spring中配置Solr的bean

向solr中添加数据,先从数据库中查询出所有有用信息,然后放到solr中

//导入solrServer对象

@Autowired

private SolrServer solrServer;

//查询商品列表

List list = itemMapper.getItemList();

//向索引库中添加文档

for (SolrItem solrItem : list) {

//创建文档对象

SolrInputDocument document = new SolrInputDocument();

document.setField("id", solrItem.getId());

document.setField("item_title", solrItem.getTitle());

document.setField("item_sell_point", solrItem.getSell_point());

document.setField("item_price", solrItem.getPrice());

document.setField("item_image", solrItem.getImage());

document.setField("item_category_name", solrItem.getItem_cat_name());

document.setField("item_desc", solrItem.getItem_desc());

//向索引库中添加文档

solrServer.add(document);

}

//提交修改

solrServer.commit();

这样,数据就全部添加到Solr中了。

从Solr中查询数据

@Autowired

private SolrServer solrServer;//导入solrServer对象

//创建查询对象

SolrQuery solrQuery = new SolrQuery();

//设置查询条件

//solrQuery.set("q","");

solrQuery.setQuery(queryString);

//设置分页

solrQuery.setStart((int) ((page - 1) * pageSize));

solrQuery.setRows(pageSize.intValue());

//高亮设置

solrQuery.setHighlight(true);

//设置高亮显示的域

solrQuery.addHighlightField("item_title");

//高亮显示的前缀

solrQuery.setHighlightSimplePre("");

//高亮显示的后缀

solrQuery.setHighlightSimplePost("");

//设置默认搜区域

solrQuery.set("df", "item_keywords");

//根据查询条件查询索引库

QueryResponse response = solrServer.query(solrQuery);

//从response中取查询结果

SolrDocumentList list = response.getResults();

//查询结果list

List itemList = new ArrayList<>();

//遍历查询结果

for (SolrDocument solrDocument : list) {

//创建一商品对象

SolrItem item = new SolrItem();

item.setId(Long.parseLong((String)solrDocument.get("id")));

//取高亮显示

Map>> highlighting = response.getHighlighting();

List hList = highlighting.get(solrDocument.get("id")).get("item_title");

String title = "";

//判断是否有高亮信息

if (hList != null && hList.size() > 0) {

title = hList.get(0);

} else {

title = (String) solrDocument.get("item_title");

}

item.setTitle(title);

item.setSell_point((String) solrDocument.get("item_sell_point"));

item.setPrice((long) solrDocument.get("item_price"));

item.setImage((String) solrDocument.get("item_image"));

//添加到商品列表

itemList.add(item);

}

最后,将查询的结果放入到itemList中返回。

报错信息:在solr中提示没有item_title字段,后发现是在第一步中配置的映射关系没有生效,仔细检查发现是在创建classes文件夹的时候写成了calsses导致配置没有生效。。重新配置生效即可添加数据并调用接口。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值