• 如何实现从slor里拿数据


    1.先写一个配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
         <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
         <constructor-arg index="0" value="http://localhost:8983/taotao"/>
         <property name="parser">
         <bean class="org.apache.solr.client.solrj.impl.XMLResponseParser"/>
         </property>
         <property name="maxRetries" value="1"/>
         <property name="connectionTimeout" value="500"/>
         
         </bean>
    
    
    </beans>

    2.写一个方法

    package com.mytaotao.search.service;
    
    import java.util.List;
    import java.util.Map;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.solr.client.solrj.SolrQuery;
    import org.apache.solr.client.solrj.SolrServerException;
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    import org.apache.solr.client.solrj.response.QueryResponse;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.mytaotao.search.bean.Item;
    import com.mytaotao.search.bean.ItemResult;
    
    @Service
    public class SearchService {
        @Autowired
        private HttpSolrServer httpSolrServer;
    
        public ItemResult doGet(String keywords,Integer page,Integer rows) {
            
            //构造搜索条件
            SolrQuery solrQuery=new SolrQuery();
            //搜索关键词
            solrQuery.setQuery("title:"+keywords+" AND status:1");
            //设置分页
            solrQuery.setStart((Math.max(page, 1)-1)*rows);
            solrQuery.setRows(rows);
            //是否需要高亮
            Boolean isHighlighting=!StringUtils.equals("*", keywords)&&StringUtils.isNotBlank(keywords);
            if(isHighlighting) {
                //设置高亮
                solrQuery.setHighlight(true);//开启高亮组件
                solrQuery.addHighlightField("title");//高亮字段
                solrQuery.setHighlightSimplePre("<em>");//标记,高亮关键字前缀
                solrQuery.setHighlightSimplePost("</em>");//后缀
            }
            //执行查询
            try {
                QueryResponse queryResponse =httpSolrServer.query(solrQuery);
                System.out.println(queryResponse);
                long totals = queryResponse.getResults().getNumFound();
                List<Item> items = queryResponse.getBeans(Item.class);
                if(isHighlighting) {
                    Map<String, Map<String, List<String>>> map = queryResponse.getHighlighting();
                    for(Map.Entry<String, Map<String, List<String>>> highlighting:map.entrySet()) {
                        for(Item item:items) {
                            if(!highlighting.getKey().equals(item.getId().toString())) {
                                continue;
                            }
                            item.setTitle(StringUtils.join(highlighting.getValue().get("title"),""));
                            break;
                        }
                    }
                }
                
                return new ItemResult(totals, items);
            
            } catch (SolrServerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            return null;
        }
        
        
    
    }

    3.添加jar包

        <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>4.10.2</version>
            </dependency>
  • 相关阅读:
    centos设置系统时间
    ubufntu 11.10启动不了nautilus的问题解决
    centos中用crontab定时执行java程序
    试用ubuntu里画流程图,架构图工具
    内嵌在客户端的网页出现刷新问题
    lenovo e23在ubuntu下打开无线网卡的办法
    mysql workbench for ubuntu测试
    有关Java多态
    我是程序猿,一个新的开始......
    有关数组的几种排序
  • 原文地址:https://www.cnblogs.com/sh-0131/p/11742144.html
Copyright © 2020-2023  润新知