美文网首页
Solr7.4+数据库+SpringBoot

Solr7.4+数据库+SpringBoot

作者: 纯粹之心89 | 来源:发表于2018-09-06 11:02 被阅读0次

    Solr下载安装:

    官方下载链接:solr 7.4.0

    注意:solr7需要java8环境,且需要在环境变量中添加 JAVA_HOME变量。

    因为项目环境为windows服务器,所以这里下载了zip包。并且新版的solr不需要与tomcat集成可独立运行。

    解压Zip包,打开cmd,cd进入solr-7.4.0\bin目录下,启动命令:

    solr start -p 8983

    关闭命令:

    solr stop -all

    创建Code:

    cmd在solr-7.4.0\bin目录下,执行:

    solr create -c [corename]

    进入solr-7.4.0\server\solr目录,可以看到刚刚创建的code目录。

    将以下jar包放入solr-7.4.0\server\solr-webapp\webapp\WEB-INF\lib目录下

    solr-7.4.0\dist\solr-dataimporthandler-7.4.0.jar

    solr-7.4.0\dist\solr-dataimporthandler-extras-7.4.0.jar

    mssql-jdbc-6.1.0.jre7.jar

    solr-7.4.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-7.4.0.jar

    这里前三个jar包是solr导入SQL server数据库所需要的,最后是自带的中文分词jar

    PS:需要使用IK分词的,可以参考Github:ik-analyzer

    配置Code:

    配置文件均在solr-7.4.0\server\solr\ [codename] \conf目录下

    managed-schema:

    在其他fieldType节点处插入支持中文分词的fieldType节点:

    <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">    
        <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>    
        </analyzer>
        <analyzer type="query"> 
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
        </analyzer>
     </fieldType>
    

    插入对应SQL中的字段field:

    <field name="solrQDBM" type="text_cn" indexed="true" stored="true"/>
    

    solrconfig.xml :

    在其他requestHandler节点处插入dataimport的配置:

    <requestHandler name="/dataimport" class="solr.DataImportHandler"> 
        <lst name="defaults"> 
            <str name="config">data-config.xml</str> 
        </lst> 
    </requestHandler>
    

    data-config.xml

    新建data-config.xml,配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <dataConfig>
        <dataSource name="mydb" type="JdbcDataSource" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Expframe_WZCS" user="sa" password="123"/>
        <document name="Info">
            <entity pk="ID" dataSource="mydb" name="myinfo"  query="select * from UserQingDan">          
                <field column="ID" name="id"/>  
                <field column="QDBM" name="solrQDBM"/>  
                <field column="QDMC" name="solrQDMC"/>  
                <field column="QDTZ" name="solrQDTZ"/> 
                <field column="DW" name="solrDW"/>  
                <field column="CKDJ" name="solrCKDJ"/> 
                <field column="SCTIME" name="solrSCTIME"/>
                <field column="MD5" name="solrMD5"/>
                <field column="Xmmc" name="solrXmmc"/>
                <field column="ppGuid" name="solrppGuid"/>
            </entity>
        </document>
    </dataConfig>
    

    详细配置方法可参考:Solr-data-config.xml配置

    导入数据

    配置文件修改完成后,打开浏览器solr管理页面,进入Cord Admin重载code配置:

    重载code配置
    Code Selector选择对应code,进入Dataimport界面,导入数据:
    数据导入
    切换至Query界面点击查询,即可看到导入的数据。
    PS:每次修改配置文件,都需要重新执行导入,重建索引

    清除所有数据

    切换至Documents界面,Document Type选择XML,输入以下Document(s)并提交:

    <delete><query>*:*</query></delete>
    <commit/>
    

    再次Query即可发现,数据已经清空。

    创建Windows服务:

    下载nssm:nssm官方下载
    解压对应系统目录下的nssm.exe文件至solr-7.4.0\bin目录下
    打开cmd,cd进入solr-7.4.0\bin目录下,启动命令:

    nssm install solr

    PS:双击直接执行nssm.exe可以看到命令帮助文档

    Path选择solr-7.4.0\bin\solr.cmd
    Arguments填入参数:(-p 8983为默认端口号,可省略)

    start -f -p 8983

    点击Install service,创建服务


    创建服务

    cmd输入命令,修改服务自动运行:

    sc config solr start= auto

    SpringBoot整合:

    pom.xml引入solr依赖:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-solr</artifactId>
            </dependency>
    

    application.properties加入solr配置:

    spring.data.solr.host=http://127.0.0.1:8983/solr

    代码中注入SolrClient

        @Resource
        private SolrClient solrClient;
    

    查询Demo:

            //创建查询语句
            SolrQuery query = new SolrQuery();
            //设置查询条件
            query.setQuery("*:*");//设置查询关键字 q
            query.setFields("id,solrQDBM,solrQDMC,solrQDTZ,solrDW,solrCKDJ,solrSCTIME,solrMD5,score");//显示的字段 fl
            query.setSort("score", SolrQuery.ORDER.desc);//按照得分降序排列
            query.setStart(0); //offset
            query.setRows(5); //limit
            //执行查询(需传入code名)
            QueryResponse queryResponse = solrClient.query("collection_qd", query);
            //获取文档列表
            SolrDocumentList documentList = queryResponse.getResults();
            //获取总记录数
            long numFound = documentList.getNumFound();
            System.out.println("总记录数:" + numFound);
            for (SolrDocument solrDocument : documentList) {
                //取各个文档信息
                System.out.println("rowID:" + solrDocument.get("id") );
                System.out.println("清单名称:" + solrDocument.get("solrQDMC") );
                System.out.println("得分:" + solrDocument.get("score") );
                System.out.print(solrDocument.toString());
                System.out.println("************************");
            }
    

    相关文章

      网友评论

          本文标题:Solr7.4+数据库+SpringBoot

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