Solr之配置
1. solr.xml配置详解
主要配置Core相关的管理参数设置,以及SolrCloud的相关配置
solr.xml支持使用变量
1. Core自动发现机制
当solr启动时,会在SOLR_HOME目录下递归查找名称为core.properties配置文件,然后根据core.properties中的配置去加载core.
一个core对应一个core.properties文件
2. core.properties中支持的参数
name core的名称,必需参数
config 用于指定solrconfig.xml配置文件的名称
dataDir 配置core的数据目录,该目录下主要存放索引数据以及事务日志,默认为data
ulogDir 用于配置事务日志文件的存放目录,默认是存放在dataDir的tlog目录下,可以将事务日志与数据目录不在同一硬盘,可以减少硬盘竞争提升I/O性能
schema 配置core的schema.xml文件名称,默认为schema.xml
shard 配置分片ID,用于Solr Clound模式下
collection 配置当前core属于哪个collection,用于solr clound模式下
roles solrclound的role定义
loadOnStartup 是否solr启动时就加载当前core并创建一个新的IndexSearcher实例
transient 用来设置当solr的transient-cacheSize阈值达到限制值的时候,是否自动卸载当前core
coreNodeName 配置core节点名称
2. solrconfig.xml配置详解
1. 主要分为以下几大块
1. 依赖的Lucene版本配置
2. 索引创建相关的配置
3. 依赖的外部jar包加载路径配置
4. JMX相关配置
5. 缓存相关配置,缓存包括过滤器缓存,查询结果集缓存,Document缓存,以及自定义缓存
6. updateHandler相关配置
7. RequestHandler相关配置
8. 查询组件配置如HightLight,SpellChecker等
9. ResponseWriter配置
10. 自定义ValueSourceParser配置,用来干预Document的权重,评分,排序
2. solrconfig.xml中的自定义标签

arr 表示一个数组,name表示这个数组参数的变量名
lst list的缩写,里面存放的是key-value键值对
bool name表示boolean变量名
str arr下的子元素是没有name属性的,而list下的str元素是有name属性的
3. schema.xml配置详解
1. solr的域类型
1. 域类型定义包含4种类型信息
name 域类型的名称,必须指定的,且必须保证同一个schema文件内唯一性
class 域类型对应的Java类,必须指定的
TextField 必须配置<analyzer>元素来指定分词器
域类型在schema.xml文件中定义,每个域类型都是通过<fieldType>元素来定义的
2. 常用域类型
1. CurrencyField的使用
功能:
1. 区间范围查询
2. Function区间范围查询
3. 排序
4. 货币代号以及货币符号的解析
5. 支持对称&非对称汇率
<fieldType name="currency" class="solr.CurrencyField" currencyConfig="currency.xml" defaultCurrency="USD" precisionStep="8"/>
name 域类型的名称
class 类
currencyConfig 定义了货币配置文件
defaultCurrency 定义当前默认货币
2. TrieDateField的使用
功能
用于对日期时间类型数据进行索引,只能精确到毫秒精度的时间点。
<fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="0"/>
name 域类型的名称
class 类
datetimeformat 表示TrieDateField域的域值最终显示的字符串格式
indexed 是否对当前TrieDateField域创建索引
multivalued 是否为多值域
stored 是否存储域值
type 表示TrieDateField域的原始域值的数据类型
3. DateRangeField
TrieDateField的替代品
4. EnumField的使用
用于对枚举类型的数据进行索引
5. ExternalFileField的使用
6. UUIDField的使用
7. 分词器
对于TextField,我们还需要通过<analyzer>元素配置分词器
<analyzer>有个type属性,是index表示索引时进行分词,query表示在查询时对用户输入的关键词进行分词
2. solr的域
<field name="salary" type="int" multiValued="false" indexed="true" stored="true"/>


1. solr的复制域
<copyField source="author" dest="text"/>
2. solr的动态域
<dynamicField name="*_c" type="currency" indexed="true" stored="true"/>
4. data-config.xml配置详解
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://172.16.1.209:3306/yangjianbo" user="root" password="123.com"/>
<document>
<entity name="user"
query="select * from user"
deltaImportQuery="select * from user where id='${dih.delta.id}'"
deltaQuery="select id from user where update_time > '${dih.last_index_time}'" >
<field column="id" name="id" />
<field column="user_name" name="userName" />
<field column="sex" name="sex" />
<field column="birth" name="birth" />
<field column="salary" name="salary" />
</entity>
</document>
</dataConfig>
5. zoo.cfg配置详解
配置于solrclound模式下

浙公网安备 33010602011771号