solr建core后产生的目录结构:
一.conf
存放配置文件。
(1)solrconfig.xml
solrconfig.xml配置文件主要定义了solr的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置。
solrconfig.xml 文件是影响 Solr 本身参数最多的配置文件;可以配置的重要功能有:
a、请求处理程序,处理对 Solr 的请求,例如向索引添加文档的请求或查询文档的请求。
b、监听器,“监听”特定查询相关事件的过程;监听器可用于触发特殊代码的执行,例如调用一些常见查询来预热缓存
c、Request Dispatcher,用于管理 HTTP 通信
d、Admin Web 界面
e、复制和副本相关的参数
属性及含义:
1.datadir节点
<dataDir>${solr.data.dir:}</dataDIr>
定义了索引数据和日志文件的存放位置。
2.luceneMatchVersion
<luceneMatchVersion>4.8</luceneMatchVersion>
表示solr底层使用的是lucene4.8
3. lib
<lib dir="../../../contrib/extraction/lib"regex=".*\.jar"/>
表示solr引用包的位置,当dir对应的目录不存在时候,会忽略此属性
4.directoryFactory
索引存储方案
solr.NRTCachingDirectoryFactory,此工厂设计目的是存储部分索引在内存中,从而加快了近实时搜索的速度。
5.codecFactory
编解码工厂允许使用自定义的编解码器
6.indexconfig节点
用于设置索引的低级别的属性
7. updateHandler节点
定义更新处理器
8.Query查询节点
<maxBooleanClauses>1024</maxBooleanClauses>
设置boolean 查询中,最大条件数。
9.Request Dispatcher
请求转发器
10.requestHandler
请求处理器
(2)schema.xml(managed-schema)
Schema.xml配置详解:Solr中会提前对文档中的字段进行定义,并且在schema.xml中对这些字段的属性进行约束,例如:字段数据类型、字段是否索引、是否存储、是否分词等。
<field>标签: 通过Field字段 定义字段的属性信息:
属性及含义:
name:字段名称
type:字段类型,指向的是本文件中的<fieldType>标签
indexed:是否创建索引
stored:是否被存储
multiValued:是否可以有多个值,如果字段可以有多个值,设置为true,false为单个值。
多个值:对应JSON的数组格式。 对应java的List格式。
<FieldType>标签指定数据类型:
属性及含义:
name:字段类型的名称,可以自定义,<field>标签的type属性可以引用该字段,来指定数据 类型。
class:字段类型在Solr中的类。StrField可索引不可分词。TextField字段可索引,可以分词,所以需要指定分词器
<analyzer>:这个子标签用来指定分词器
<uniqueKey>标签:
唯一主键
Lucene中本来是没有主键的。删除和修改都需要根据词条进行匹配。
而Solr却可以设置一个字段为唯一主键,这样增删改操作都可以根据主键来进行!
2.data
索引数据目录。
index-存放索引文件
log-存放日志记录
3.core.properties
当前core的属性文件。core.properties 为每个 core 定义特定的属性,例如名称、核心所属的集合、模式的位置等。
name:核心的名称,在使用 CoreAdminHandler 运行命令时,使用此名称来引用核心。
config:核心的配置文件名称,默认是 solrconfig.xml。
schema:核心的模式文件名,默认为 managed-schema。
dataDir:核心的数据目录(存储索引),绝对路径或相对于 instanceDir 的路径;默认是 data。
configSet:用于配核心的已定义配置集的名称。
properties:核心的属性文件的名称,该值可以是绝对路径名或相对于 instanceDir 的路径。
transient:如果为 true,则在 Solr 到达到 transientCacheSize 大小时,卸载核心;如果未指定(默认 false),那么会按照最近最少使用的顺序来卸载。在 SolrCloud 模式下不建议开启。
loadOnStartup:如果为 true,则在 Solr 启动时会加载核心,默认为 true,在 SolrCloud 模式下不建议设置为 false。