首页 > 技术文章 > Solr后台管理及SolrJ的使用

fengcha0 2018-11-24 23:08 原文

1.Solr后台管理

1.1.   管理界面

 

1.2.   Dashboard

  仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源、jvm等信息。

1.3.   Logging

  Solr运行日志信息

1.4.   Cloud

  Cloud即SolrCloud,即Solr云(集群),当使用Solr Cloud模式运行时会显示此菜单,如下图是Solr Cloud的管理界面:

1.5.   Core Admin

  Solr Core的管理界面。Solr Core 是Solr的一个独立运行实例单位,它可以对外提供索引和搜索服务,一个Solr工程可以运行多个SolrCore(Solr实例),一个Core对应一个索引目录。

  添加solrcore:

    第一步:复制collection1改名为collection2

    第二步:修改core.properties。name=collection2

    第三步:重启tomcat

1.6.   java properties

  Solr在JVM 运行环境中的属性信息,包括类路径、文件编码、jvm内存设置等信息。

1.7.   Tread Dump

  显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。

1.8.   Core selector

  选择一个SolrCore进行详细操作,如下:

1.9.   Analysis

  通过此界面可以测试索引分析器和搜索分析器的执行情况。

1.10. Dataimport

  可以定义数据导入处理器,从关系数据库将数据导入 到Solr索引库中。

1.11. Document

  通过此菜单可以创建索引、更新索引、删除索引等操作,界面如下:

  /update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。

1.12. Query

  通过/select执行搜索索引,必须指定“q”查询条件方可搜索。

2. 配置中文分析器

  2.1.   Schema.xml

    schema.xml,在SolrCore的conf目录下,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括FieldTypes、Fields和其他的一些缺省设置。

  2.2.   安装中文分词器

    使用IKAnalyzer中文分析器。

      第一步:把IKAnalyzer2012FF_u1.jar添加到solr/WEB-INF/lib目录下。

      第二步:复制IKAnalyzer的配置文件和自定义词典和停用词词典到solr的classpath下。

      第三步:在schema.xml中添加一个自定义的fieldType,使用中文分析器。

      第四步:定义field,指定field的type属性为text_ik 

      第四步:重启tomcat 

  2.3. 设置业务系统Field

    如果不使用Solr提供的Field可以针对具体的业务需要自定义一套Field,如下是商品信息Field:

    <!--product-->

       <field name="product_name" type="text_ik" indexed="true" stored="true"/>

       <field name="product_price"  type="float" indexed="true" stored="true"/>

       <field name="product_description" type="text_ik" indexed="true" stored="false" />

       <field name="product_picture" type="string" indexed="false" stored="true" />

       <field name="product_catalog_name" type="string" indexed="true" stored="true" />

       <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>

       <copyField source="product_name" dest="product_keywords"/>

       <copyField source="product_description" dest="product_keywords"/>

3.使用SolrJ管理索引库

  3.1. 什么是solrJ

    solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务

  3.2.   实现步骤

    第一步:创建一个java工程

    第二步:导入jar包。包括solrJ的jar包。还需要 

    第三步:和Solr服务器建立连接。HttpSolrServer对象建立连接。

    第四步:创建一个SolrInputDocument对象,然后添加域。

    第五步:将SolrInputDocument添加到索引库。

    第六步:提交。

  3.3.   向索引库中添加索引代码实现

//向索引库中添加索引
    @Test
    public void addDocument() throws Exception {
        //和solr服务器创建连接
        //参数:solr服务器的地址
        SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
        //创建一个文档对象
        SolrInputDocument document = new SolrInputDocument();
        //向文档中添加域
        //第一个参数:域的名称,域的名称必须是在schema.xml中定义的
        //第二个参数:域的值
        document.addField("id", "c0001");
        document.addField("title_ik", "使用solrJ添加的文档");
        document.addField("content_ik", "文档的内容");
        document.addField("product_name", "商品名称");
        //把document对象添加到索引库中
        solrServer.add(document);
        //提交修改
        solrServer.commit();
        
    }

  3.4查询索引代码

//查询索引
    @Test
    public void queryIndex() throws Exception {
        //创建连接
        SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
        //创建一个query对象
        SolrQuery query = new SolrQuery();
        //设置查询条件
        query.setQuery("*:*");
        //执行查询
        QueryResponse queryResponse = solrServer.query(query);
        //取查询结果
        SolrDocumentList solrDocumentList = queryResponse.getResults();
        //共查询到商品数量
        System.out.println("共查询到商品数量:" + solrDocumentList.getNumFound());
        //遍历查询的结果
        for (SolrDocument solrDocument : solrDocumentList) {
            System.out.println(solrDocument.get("id"));
            System.out.println(solrDocument.get("product_name"));
            System.out.println(solrDocument.get("product_price"));
            System.out.println(solrDocument.get("product_catalog_name"));
            System.out.println(solrDocument.get("product_picture"));
            
        }
    }

 

推荐阅读