欢迎投稿

今日深度:

solr高级查询,

solr高级查询,


public class SearchServiceImpl implements SearchService {

    
    @Autowired
    private SolrServer solrServer;
    public void selectPaginationByQuery(String keyword
            ,Long brandId,String price) throws Exception{
        StringBuilder params = new StringBuilder();
        
        //索引条件
        SolrQuery solrQuery = new SolrQuery();
        //关键词
//        solrQuery.set("q", "name_ik:" + keyword);
        solrQuery.setQuery(keyword);
        params.append("keyword=").append(keyword);
        //TODO 过滤条件  
        if(null != brandId){
            solrQuery.addFilterQuery("brandId:" + brandId);
            params.append("&brandId=").append(brandId);
        }
        //价格区间  0-99  1600
        if(null != price){
            String[] p = price.split("-");
            if(p.length == 2){
                solrQuery.addFilterQuery("price:[" + p[0] +  " TO " + p[1] +  "]");
            }else{
                solrQuery.addFilterQuery("price:[" + p[0] +  " TO *]");
            }
            params.append("&price=").append(price);
        }
        
        //TODO 高亮
        //1:打开高亮的开关
        solrQuery.setHighlight(true);
        //2:设置需要高亮的域
        solrQuery.addHighlightField("name_ik");
        //3:高亮的前缀 后缀
        solrQuery.setHighlightSimplePre("<span style='color:red'>");
        solrQuery.setHighlightSimplePost("</span>");
        
        //分页
        solrQuery.setStart(1);
        solrQuery.setRows(10);
        //排序
        solrQuery.setSort("price", ORDER.desc);
        //指定默认查询的域  default field
        solrQuery.set("df", "name_ik");
        //指定要查询什么域 field list
        solrQuery.set("fl", "id,name_ik,price,url");
        //执行查询
        QueryResponse response = solrServer.query(solrQuery);
        
        //获取高亮
        Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
        //1: Map K id  V : map
        //2: Map K name_ik  V list
        //3: list  apache 不一个  多值  本次只有一个值  list.get(0)
        
        //结果集
        SolrDocumentList docs = response.getResults();
        //总条数
        long numFound = docs.getNumFound();
        
        //创建商品结果 集
        List<Product> products = new ArrayList<>();
        for (SolrDocument doc : docs) {
            Product product = new Product();
            //商品ID
            String id = (String) doc.get("id");
            product.setId(Long.parseLong(id));
            //商品名称
            Map<String, List<String>> map = highlighting.get(id);
            List<String> list = map.get("name_ik");
//            String name = (String) doc.get("name_ik");
            product.setName(list.get(0));
            //价格
            product.setPrice((Float) doc.get("price"));
            //图片
            String url = (String) doc.get("url");
            product.setImgUrl(url);
            //添加到集合中
            products.add(product);
        }
       
    }

www.htsjk.Com true http://www.htsjk.com/solr/39326.html NewsArticle solr高级查询, public class SearchServiceImpl implements SearchService {          @Autowired     private SolrServer solrServer;     public void selectPaginationByQuery(String keyword             ,Long brandId,Strin...
相关文章
    暂无相关文章
评论暂时关闭