一、solr安装
从solr官网下载并解压:http://archive.apache.org/dist/lucene/solr/
二、solr命令
进入solr->bin
启动:solr start [-p 8983]
访问 http://localhost:8983/solr
停止:solr stop -all
重启:solr restart -p 8983
创建core: solr create -c test_core
三、连接mysql数据库
1、需要将相应的数据库驱动的jar包导入到server\solr-webapp\webapp\WEB-INF\lib下
2、在server\solr下找到自己的核心源的文件夹,打开conf文件夹,我们需要配置solrconfig.xml,managed-schema以及增加一个数据库配置文件。
配置solrconfig.xml
(1)数据库solr的jar包引入,找到对应配置位置加入如下配置
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
(2)增加数据库配置xml文件,找到/select的requestHandler,在上面加入,其中config里面为之后增加的数据库配置文件名字(db-data-config.xml)
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
3. 在conf文件夹下,新增配置数据库的xml文件,dataSource中配置数据库数据,type为类型,driver为对应数据库的驱动类,url为数据库地址,user为数据库账户,password为数据库密码。entity为需要的查询数据库语句,图中为查询表 v-solr里面的数据,下面的field为查出的数据需要向solr中存储的字段已经对应存入到solr中的字段名称。
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/orders?charactorEncoding=utf-8"
user="root"
password="123456" />
<document>
<!--<entity name="share" query="select * from product"
deltaImportQuery="select * from product where CREATE_TIME > '${dataimporter.last_index_time}'"
deltaQuery="select * from product where CREATE_TIME > '${dataimporter.last_index_time}'"
pk="ID" >
<field column="ID" name="id" />
<field column="PRODUCT_NAME" name="productName" />
<field column="PRODUCT_DESC" name="productDesc" />
<field column="CREATE_TIME" name="createTime" />
<field column="UPDATE_TIME" name="updateTime" />
</entity>-->
<entity name="v_solr" query="select * from v_solr"
deltaImportQuery="select * from v_solr"
deltaQuery="select * from v_solr"
pk="id">
<field column="id" name="id"/>
<field column="title" name="searchTitle"/>
<field column="content" name="searchContent"/>
</entity>
</document>
</dataConfig>
4.配置managed-schema。这个文件是对应第三步里面的xml来配置的。里面增加第三步查询里面的字段的对应解析配置
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="searchTitle" type="text_ik" indexed="true" stored="true" />
<field name="searchContent" type="text_ik" indexed="true" stored="true" />
<!-- 索引复制,联合索引 -->
<field name="keyword" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="true"/>
<copyField source="id" dest="keyword" maxChars="30000"/>
<copyField source="searchTitle" dest="keyword" maxChars="30000"/>
<copyField source="searchContent" dest="keyword" maxChars="30000"/>
5.文件配置成功后,在控制台点击如图所示按钮,导入数据
6.查询数据是否导入,如图所示,导入成功
四、文件搜索
1、在server\solr下找到自己的核心源的文件夹,打开conf文件夹,我们需要配置solrconfig.xml,managed-schema以及增加一个数据库配置文件。参考连接mysql数据库
2、配置tika-data-config.xml
<dataConfig>
<dataSource type="BinFileDataSource"/>
<document>
<entity name="file" processor="FileListEntityProcessor" dataSource="null"
baseDir="${solr.install.dir}/files/file_repos" fileName=".*\.(DOC)|(PDF)|(pdf)|(doc)|(docx)|(ppt)|(txt)|(log)|(xls)|(xlsx)|(csv)|(json)"
rootEntity="false" onError="skip" recursive="true">
<field column="fileAbsolutePath" name="id" />
<field column="fileSize" name="size" />
<field column="fileLastModified" name="lastModified" />
<entity name="tika-test" dataSource="bin" processor="TikaEntityProcessor"
url="${file.fileAbsolutePath}" format="text" onError="skip">
<field column="Author" name="author" meta="true"/>
<field column="title" name="title" meta="true"/>
<field column="dc:format" name="format" meta="true"/>
<field column="text" name="content"/>
</entity>
</entity>
</document>
</dataConfig>
3、配置managed-schema
五、IK Analyzer(中文分词器)
1、分词器下载地址https://github.com/EugenePig/ik-analyzer-solr5
2、把ik-analyzer-solr5-5.x.jar拷贝到Solr中的应用服务下:
3、配置managed-schema
在managed-schema里,添加
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />
</analyzer>
</fieldType>
或者
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
把需要分词的字段,设置为text_ik
六、springboot+solr
1、在pom.xml 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
2、application.properties
# solr
spring.data.solr.host=http://localhost:8983/solr/
application.yml
spring:
data:
solr:
host: http://127.0.0.1:8080/solr
具体项目地址参考:https://gitee.com/1255480095/springboot-solr