1.添加相应的jar包
将solr初始服务器中dist下面的jar和mysql的jar包复制到
tomcat服务器D:\solr\apache-tomcat-8.5.42\webapps\solr\WEB-INF\lib中
- 配置solr找到自带的中文分词器jar包导入D:\solr\apache-tomcat-8.5.42\webapps\solr\WEB-INF\lib中
2.配置中文分词器
修改D:\solr\solrhome\core_demo\conf文件夹下面的managed-schema文件
将
<!-- ChineseAnalyzer -->
<fieldType name="solr_cnAnalyzer" 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>
复制到该文件的最下面 重新启动服务器,可以在分词器页面中找到该分词器
- managed-schema文件介绍
1.域的配置
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
name:指定域 这个名称是唯一的
type :域类型
indexed是否索引
stored是否储存
required是否必须
multiValued: 是否多字段 ,比如我们要是想查询的字段包括标题和其中的内容时,可以设置为true
2.域的唯一标识
<uniqueKey>id</uniqueKey>
表示文档的唯一域的标识 (相当于数据库表中的主键)
3.复制域的配置
<copyField source="cat" dest="text"/>
<copyField source="name" dest="text"/>
<copyField source="manu" dest="text"/>
比如我们在搜索时输入一个java,一篇文章分为标题,简介,内容等多个字段,输入的关键字 需要在solr的域中记性域的检索,不可能从一个表中将所有的字段进行检索,因为有些字段不需要索引,所以就出现了复制域,把多个域的关键词复制到同一个域,多个域时,可以放到同一个域中,就不用定义那么多的域了。方便搜索。
4.动态域
<dynamicField name="*_i" type="pint" indexed="true" stored="true"/>
如果命名的是符合动态配合规则,就回去找普通域的规则
- 域的类型
3.修改solrconfig.xml文件
1.D:\solr\solrhome\core_demo\conf文件下面修改该文件
在720行添加数据库配置
<!--添加导入配置-->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
其中data-config.xml文件名自定义
2.D:\solr\solrhome\core_demo\conf文件夹下创建data-config.xml配置文件
添加 如下类容
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource
type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solr"
user="root"
password="123456" />
<document>
<entity name="haLock" query="select * from joke" deltaQuery="select * from joke">
<field column="id" name="id" />
<field column="title" name="title" />
<field column="info" name="info" />
</entity>
</document>
</dataConfig>
3.回到在managed-schema中配置相应的域,field
<!--自定义的域-->
<field name="info" type="solr_cnAnalyzer" indexed="true" stored="true"/>
<field name="title1" type="solr_cnAnalyzer" indexed="true" stored="true"/>
对相应的域进行映射,可以通过复制域的方式合成一个新的域,这样不管是标题中含有对应信息还是内容中含有对应信息,都可以被查询出来。