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 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("************************");
}
网友评论