欢迎投稿

今日深度:

Solr,

Solr,


1、solr是什么?

Solr是基于Lucene的,Lucene 支持强大的匹配能力,如短语,通配符,连接,分组和更多不同的数据类型。

2、为什么要solr?

  • solr是将整个索引操作功能封装好了的搜索引擎系统(企业级搜索引擎产品);
  • solr可以部署到单独的服务器上(WEB服务),它可以提供服务,我们的业务系统就只要发送请求,接收响应即可,降低了业务系统的负载;
  • solr部署在专门的服务器上,它的索引库就不会受业务系统服务器存储空间的限制;
  • olr支持分布式集群,索引服务的容量和能力可以线性扩展。

3、solr服务的搭建和IK分词器的配置在此略过。。。后期添加

4、代码应用,写入solr服务

5、从solr服务查询

//从索引库里面获取商品信息,现在这个dao层是从索引库获取信息,因为之前的写的逻辑是将db里面的数据导入到索引库。后面的查询都是从索引库中进行,而不从数据库了
@Repository
public class SearchDaoImpl implements SearchDao {
    @Autowired
    private SolrServer solrServer;
 
    @Override
    public SearchResult search(SolrQuery query) throws Exception {
        //这是从索引库里面,直接执行查询
        QueryResponse response = solrServer.query(query);
        //获取查询的结果
        SolrDocumentList documentList= response.getResults();
         
        SearchResult result=new SearchResult();
        //这是获取总记录数
        result.setRecordCount(documentList.getNumFound());
         
        List<Item> itemList=new ArrayList<>();
        //商品的高亮显示,即当鼠标移到字上时,该字体变色,这是从QueryResponse中获取的
        Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
         
        for (SolrDocument solrDocument : documentList) {
             
            //每个SolrDocument都是一个商品pojo的内容,所以这里要创建一个商品的pojo对象,来获取详细的字段
            Item item=new Item();
            item.setId((String) solrDocument.get("id"));
            //高亮显示是title的高亮显示
            List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
            String title="";
            if (list!=null && list.size()>0) {
                title=list.get(0); 
            }
            else{
                title=(String) solrDocument.get("item_title"); 
            }
         
            item.setTitle(title);
            item.setPrice((Long) solrDocument.get("item_price"));
            item.setImage((String) solrDocument.get("item_image"));
            item.setCategory_name((String) solrDocument.get(" item_category_name"));
            item.setSell_point((String) solrDocument.get("item_sell_point"));
           itemList.add(item);
        }
         
          result.setItemList(itemList);
     
        return result;
    }
 
}

 

www.htsjk.Com true http://www.htsjk.com/solr/28466.html NewsArticle Solr, 1、solr是什么? Solr是基于Lucene的,Lucene 支持强大的匹配能力,如短语,通配符,连接,分组和更多不同的数据类型。 2、为什么要solr? solr是将整个索引操作功能封装好了的搜索...
相关文章
    暂无相关文章
评论暂时关闭