solr搜索

/**
 * 商品数据导入及从solr库中获取查询结果
 * @author wyh
 *2018年8月9日
 *
 */
@Service
public class SolrServiceImpl implements SolrService {

    @Autowired
    private SolrItemMapper sMapper;
    
    @Autowired
    private SolrServer solrServer;
    
    @Override
    public HwResult solrImport() {
        
        //先从数据库中获取数据
        List<ItemSolr> list = sMapper.getItemList();
        
        //将数据导入到solr中
        try {
            for(ItemSolr is : list){
                //创建文档对象
                SolrInputDocument sid = new SolrInputDocument();
                //给域赋值
                sid.addField("item_title", is.getTitle());
                sid.setField("id", is.getId());
                sid.setField("item_sell_point",is.getSell_point());
                sid.setField("item_image", is.getImage());
                sid.setField("item_price", is.getPrice());
                sid.setField("item_category_name", is.getCname());
                sid.setField("item_cid", is.getCid());
                //执行添加
                solrServer.add(sid);
                //提交
                solrServer.commit();
            }
            return HwResult.ok();

        } catch (Exception e) {
            return HwResult.build(500, "数据导入失败");
        }
    }

    
    
    @Autowired
    private SearchItemDao searchItemDao;
    
    //根据查询条件查询商品列表信息
    @Override
    public SearchItemResult searchItemsByKeywors(String keyword,
            Integer pageNum, Integer pageSize) throws Exception {
        // 查询条件在service层封装,所以在这里创建查询对象
        SolrQuery sq = new SolrQuery();
        //添加查询条件
        sq.set("q", keyword);
        //设置分页条件
        sq.setStart((pageNum-1)*pageSize);//从第几条开始
        sq.setRows(pageSize);//一页显示多少条
        //设置默认搜索域
        sq.set("df", "item_title");
        //开启高亮
        sq.setHighlight(true);
        //设置高亮显示的域
        sq.addHighlightField("item_title");//最好不要硬编码到代码中,应该写在配置文件中
        //设置前缀和后缀
        sq.setHighlightSimplePre("<em><font color='red'>");
        sq.setHighlightSimplePost("</font></em>");
        //设置好查询对象之后,调用dao
        SearchItemResult result = searchItemDao.searchItems(sq);
        //dao返回过来的有总记录数,但是没有总页数
        //获取总记录数
        Long total = result.getTotal();
        //计算总页数
        Long page = total/pageSize;
        result.setTaotalPage(total%pageSize!=0?page+1:page);
        return result;
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值