美文网首页
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