美文网首页
Solr的使用大全

Solr的使用大全

作者: 艾剪疏 | 来源:发表于2018-03-13 15:59 被阅读35次

重点:
1 理解Lucene和Solr之间的关系,为何要存在两个;
2 如何使用。

1 Tomcat环境下配置slor-4.6

https://app.yinxiang.com/shard/s66/nl/16959966/444e64f0-8d67-4760-befe-c6f6fdf3de88?title=Tomcat%E7%8E%AF%E5%A2%83%E4%B8%8B%E9%85%8D%E7%BD%AEslor-4.6

2 使用Zookeeper搭建solr集群(一台和多台)

https://app.yinxiang.com/shard/s66/nl/16959966/cced00e4-fe88-43fc-af72-98b344d56597?title=%E4%BD%BF%E7%94%A8Zookeeper%E6%90%AD%E5%BB%BAsolr%E9%9B%86%E7%BE%A4%EF%BC%88%E4%B8%80%E5%8F%B0%E5%92%8C%E5%A4%9A%E5%8F%B0%EF%BC%89

3 Slor基本使用方法(各个版本相差不大)

下面文章写的很详细

https://www.cnblogs.com/zhuxiaojie/p/5764680.html

1 在tomcat安装solr,并且建立solrCore,Tomcat上可以运行Solr页面;(文章第一部分讲的较详细。)

2 配置Solr的域,自带分词器(可选)、数据类型。

image.png

域最好和实际需要索引的部分相符。其他细节配置文章中有详解。

行业信息网的域 image.png

3 实际使用Solrj,建立索引和完成搜索

(1)建索引

public static void solrIndex(){
        try {
            String url = "http://localhost:8085/solr";
            HttpSolrServer server = new HttpSolrServer(url);
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("docfullid", "news_1");
//          doc.addField("newsId", "1");
            doc.addField("newsTitle", "中国天然气供需形势中国");
//          doc.addField("sourceNet", 25);
//          doc.addField("sourceUrl", "www.abc.com");   
//          doc.addField("filePath", "e://a/b/c");          
//          doc.addField("newsTime", DateUtils.getYear("2000"));
            doc.addField("content", "在搜索词前面天然气供需形势中国加入搜索域的优先级 > solrconfig.xml中配置的qf值 > schema.xml文件中配置的默认搜索域");
//          doc.addField("testik", "在程序中用setFields函数可以指定显示域,并且该指定方法的优先级 > solrconfing.xml中配置的fl值,schema.xml文件中配置的默认搜索域");
            
            
            SolrInputDocument doc1 = new SolrInputDocument();
            doc1.addField("docfullid", "news_2");
//          doc1.addField("newsId", "2");
            doc1.addField("newsTitle", "美国智能加油站");
//          doc1.addField("sourceNet", 25);
//          doc1.addField("sourceUrl", "www.asbc.com"); 
//          doc1.addField("filePath", "e://a/ssb/c");           
//          doc1.addField("newsTime", DateUtils.getYear("2000"));
            doc1.addField("content", "在搜索词前面加入搜智能加油站索域中国石油测井的优先级 > solrconfig.xml中配置的qf值 > schema.xml文件中配中国石油测井置的默认搜索域");
            
            server.add(doc);
            server.add(doc1);
            server.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

(2)搜索

    public static void solrSearcher(){
        try {
            String url = "http://localhost:8085/my_fullretrieve";
            HttpSolrServer server = new HttpSolrServer(url);
            SolrQuery params = new SolrQuery("newsTitle:石油"); 
            
            //默认搜索域
//          params.setParam("df", "name");
            
            //显示域
            String[] fields = {"newsTitle","content"};
            params.setFields(fields);
            
            //高亮
            params.addHighlightField("newsTitle");
            params.setHighlight(true);
            params.setHighlightSimplePre("<em class=\"highlight\" >");
            params.setHighlightSimplePost("</em>");
            //显示的字数
            params.setHighlightFragsize(10);
            
            //排序
//          params.addSort("age", ORDER.desc);
            
            //过滤,对搜索结果进行过滤,达到精确搜索   
//          String[] fqs = {"name:中国"};
//          params.addFilterQuery(fqs);
            
            //分页
//          params.setStart(0);
//          params.setRows(10);
            
            //facet
//          String[] ftf = {"name","content"};
//          params.addFacetField(ftf);
            
//          params.addNumericRangeFacet("age", 1, 26, 26);
//          params.addDateRangeFacet("date", DateUtils.getYear("1999"), DateUtils.getYear("2015"), "+15YEAR");
            
            QueryResponse response = server.query(params);
            
            /* List<FacetField> listField = response.getFacetFields();
             for(FacetField facetField : listField){
                 System.out.println(facetField.getName());
                 List<Count> counts = facetField.getValues();
                 for(Count c : counts){
                     System.out.println(c.getName()+":"+c.getCount());
                 }
             }*/
            
//           List<RangeFacet> listFacet = response.getFacetRanges();
//           for(RangeFacet rf : listFacet){
//               List<RangeFacet.Count> listCounts = rf.getCounts();
//               for(RangeFacet.Count count : listCounts){
//                   System.out.println("facet:"+count.getValue()+":"+count.getCount());
//               }
//           }
            
            SolrDocumentList list = response.getResults();
            Map<String,Map<String,List<String>>> map = response.getHighlighting();
            System.out.println("total hits:"+list.getNumFound());
            for(SolrDocument doc : list){
                System.out.println(doc.getFieldValue("newsTitle"));
                System.out.println("hl:"+map.get(doc.getFieldValue("news_2664")).get("newsTitle").get(0));
                System.out.println("content:"+doc.get("content"));
//              System.out.println("newsTitle:"+doc.get("newsTitle"));
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4 文章中提到了直接导入数据库的功能(dataimport 导入数据库数据)要注意get。

相关文章

  • Solr的使用大全

    重点:1 理解Lucene和Solr之间的关系,为何要存在两个;2 如何使用。 1 Tomcat环境下配置slor...

  • Ranger-Solr审计日志安装

    使用RangerAdmin安装solr,基于已有的solr环境安装,主要是在solr创建用于存储数据的CoreAd...

  • solr内存调优

    在使用使用solr时,当我们的数据量比较大时,我们就要考虑对solr内存进行调优了,不然solr程序就会通过oom...

  • 使用solrj连接solr集群进行操作

    1.solr配置文件 2.solr配置 3.solr查询接口--做两个接口 3.使用solr查询数据 4.封装so...

  • Solr6.4.2+jetty+mysql

    下载地址 solr : solr官网地址 部署 由于solr默认带有jetty服务器,所以使用默认jetty服务器...

  • solr源码解析(一)———启动过程详解

    本文主要是针对solr启动过程的理解。⚠️使用solr-6.3.0版本 启动入口 web.xml solr在中嵌入...

  • 2018-02-08搭建solr环境、遇到的问题

    一、使用solr做全站搜索流程: 1)搭建solr环境 2)创建索引(可使用定时创建索引) 3)添加索引(位置:保...

  • solr单机版搭建

    使用的solr 版本为 7.2.0准备环境: centos系统 jdk1.8 tomcat-8.5.x solr-...

  • 实验报告

    课上实验报告 1启动solr 使用我们自己的云服务器http://120.24.46.77:8983/solr/#...

  • Solr安装部署连接mysql数据

    记录下第一次使用solr的历程 1: 安装前提 | solr版本 | Jdk版本 || --...

网友评论

      本文标题:Solr的使用大全

      本文链接:https://www.haomeiwen.com/subject/llezfftx.html