• Solr后台管理及SolrJ的使用


    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"));
                
            }
        }
  • 相关阅读:
    vue双向数据绑定原理解析及js代码实现
    react 实现tab切换
    vue不是内部或外部命令,解决办法
    JavaScript 基础知识 表达式和运算符
    JavaScript 基础知识 变量与数据类型
    Animation动画-小动画
    Ajax的封装
    esp32 python上位机(命令行)
    ESP32扫描环境中的所有WiFi并且通过串口选择需要连接的WiFi
    Linux修改开机图形/etc/motd
  • 原文地址:https://www.cnblogs.com/fengcha0/p/10014068.html
Copyright © 2020-2023  润新知