接上一篇Linux下安装solr7.4,来谈谈solr的配置文件schema.xml和db-data-config.xml
首先看schema.xml:
id
field标签用来定义solr core中的字段。这里列出的三个字段如果没有特殊原因尽量保留。字段id被声明为uniqueKey,是让id来唯一标明一个solrdocument。通过这个id来对solrdocument进行操作。
type对应的是字段的属性,solr在schema中定义了很多属性,当然也可以自己定义属性。这里常见的属性有pint,pdate,string,boolean等。
不常见或者自定义的属性:
该属性type="text_ws"定义的字段通过空格去分割文本变成一个一个的词,然后可以通过被分割的词去查找该document。
这里用到的逆向索引是solr的精髓,将分好的词作为key,文档标签作为value,对key建索引,去查询文档。
indexed属性如果为true则说明该字段将被建索引。
stored属性如果为true,则将该字段内容进行存储。
multiValued如果设置为true,则表明该字段是由多个字段值组成的。比如上面例子中的text字段,它是由content和title字段组成。对text字段的操作就是对content和title字段进行操作。
上面这一段配置的意思是:有两个字段title和content,他们是自定义的text_hanlp属性,含有这属性的字段都接受hanlp的分词。这两个字段不创建索引,只做存储。text字段负责组合title和content字段,并创建索引用来检索。
required属性表明该字段值是否必须。
自定义属性text_hanlp来达到中文分词效果
因为solr常用的ik分词、mmseg4j都已经不维护了。所以这里使用还有大神维护的Hanlp分词器。
配置Hanlp分词可以参考教程
将hanlp-portable.jar和hanlp-lucene-plugin.jar共两个jar放入${tomcat}/webapps/solr/WEB-INF/lib下
配置好之后,可以在solr admin界面查看分词效果:
solr分词
定义动态字段
dynamicField定义的就是动态字段,只要符合_i结尾的字段都可以被这个字段所定义。同样的,schema.xml中已经定义好了很多动态字段。可以直接拿来用。
db-data-config.xml配置文件
该文件主要配置数据库连接和字段对应关系。用来做全量和增量索引的创建,相对schema.xml简单很多。
下面看下主要配置:
url="jdbc:mysql://127.0.0.1:3306/database?
useUnicode=true&characterEncoding=UTF-8"
user="root"
batchSize="-1"
password="123456"/>
dataSource用来定义数据库连接,batchSize设为-1是为了避免查询创建索引导致内存溢出。
query="select * from tableName" >
这里做了一个简单的定义,看着很清楚。columen标明的是数据库查出的字段,name标明的属性和schema中定义的字段对应。
deltaQuery="select id from item where last_modified > '${dataimporter.last_index_time}'">
deltaQuery用来做增量索引的创建。
当文件配置好之后,重启tomcat。访问solr/index.html。
solr创建索引
选择1,然后2可以选择全量索引或者创建增量索引。勾选clean会清楚上次的索引,点选commit创建索引进行提交。点击execute进行执行。
下一篇,更新spring boot 中集成solrJ对solr进行操作。