作者:fanersai_668 | 来源:互联网 | 2023-05-17 20:35
Solr的三个配置文件solr.xml,solrconfig.xml,schema.xml.Solr.xml是Solr第一个查找的配置文件,persistent意思为是否将注册的实例的配置进
Solr 的三个配置文件 solr.xml, solrconfig.xml , schema.xml.
Solr.xml是Solr第一个查找的配置文件,
"/admin/cores">
"collection1" instanceDir=“collection1”/>
"ss60" instanceDir="D:/03workspaces/solrQuery/solrhome/ss60\"/>
Solr可以动态创建多个实例,instanceDir可以是相对路径,也可以是绝对路径
solrconfig.xml可以配置 dataimport handler
schema.xml用来配置schema信息的,以下是schema.xml配置信息的URL访问形式
http://localhost:8983/solr/schema 获取schema.xml内容
http://localhost:8983/solr/schema/fields/ 获取schema.xml中某个字段的配置内容、等等测试的URL地址
solrconfig.xml中内容的信息
${solr.data.dir:D:\Company Item\solr43\src\solr\collection1\data} 用来配置索引生成的路径,位置信息
监听Update相关的事件:“postCommit”,“postOptimize”,此时可以用来触发任何代码。
根据索引的变化,可以更新缓存的参数。
newSearcher和firstSearch的监听器,在事件触发前可以做热身搜索,特别是在开机的时候,你也可以扩展写另一个事件监听器,在预热的时候加载缓存,增加每天的热词搜索
定义一个类继承AbstractSolrEventListener,
requestDispatcher 配置应该如何处理HTTP请求的各个方面,包括HTTP请求解析,远程流媒体的支持,上传文件的大小等等。
httpCaching的配置,缓存信息的配置
requestHandler 用来处理SolrQueryRequest,根据path找到的handler
UpdateRequestProcessorChain 处理SolrQueryRequest的责任链
Schema.xml文件的配置:
Field字段属性
omitNorms:Norm是在index阶段用来记录对Field的boost的信息。使用Norm会占用比较的多内存。一般来说只有full-text字段或需要index阶段boost的字段才会需要norms
compressed:字段是需要压缩的,导致索引和搜索变慢,但是减少了存储空间,只有StrField和TextField是可以压缩,通常适用于长度超过200的字段
compressThreshold:属性表示保证压缩到不小于一个大小(单位:char)
multiValued:此字段可以存储多个值
termVectors:当设置true,会存储 term vector。当使用MoreLikeThis或Higlight的时候,用来作为相似词的field应该存储起来。
termPositions:存储 term vector中的地址信息,会消耗存储开销。
termOffsets:存储 term vector 的偏移量,会消耗存储开销。
fieldType字段属性
sortMissingLast:"true" 表示没有该field的数据排在有该field的数据之后,而不管请求时的排序规则 sortMissingFirst排序规则与sortMissingLast相反
omitTermFreqAndPositions(true|false):当为true时,省略这一领域的长远频率,位置和有效载荷
positionIncrementGap:和multiValued一起使用,设置多个值之间的虚拟空白的数量,用在多值字段的匹配规则上。例如有一个多值字段有2个值A和B。如果
positiOnIncrementGap=0;那么A和B对应的位置0,1,那么查询“A B”你是可以命中的。假如你不希望命中,你可以将positionIncrementGap设置为100,这时,A和
B对应的位置0,101,那么此时查询“A B”将无结果。
precisionStep是在做范围搜索的时候起作用的,默认值是4;数值类型(int float double)在Lucene里都是以string形式存储的,当然这个string是经过编码的,
经过编码后的string保证是顺序的,也就是说num1>num2,那么strNum1>strNum2。precisionStep用来分解编码后的string,例如有一个precisionStep,默认是4,也
就是隔4位索引一个前缀,比如0100,0011,0001,1010会被分成下列的二进制位“0100,0011,0001,1010","0100,0011,0001",0100,0011","0100"。这个值越大,那
么索引就越小,那么范围查询的性能(尤其是细粒度的范围查询)也越差;这个值越小,索引就越大,那么性能越差。
>