跟益达学Solr5之solrconfig.xml配置详解

          solrconfig.xml配置文件中包含了很多solr自身配置相关的参数,solrconfig.xml配置文件示例可以从solr的解压目录下找到,如图:
跟益达学Solr5之solrconfig.xml配置详解_第1张图片
 
用文本编辑软件打开solrconfig.xml配置,你将会看到以下配置内容:






  

  
  5.1.0

  
  
  C:\solr_home\core1\data

  
  
   

  
  

  

  
  

    
    ${solr.lock.type:native}

    
     true
  


  
  
  
  
  
  

  
  

     
    
      ${solr.ulog.dir:}
    
 
    
      
       ${solr.autoCommit.maxTime:15000} 
       false 
     

    
      
       ${solr.autoSoftCommit.maxTime:-1} 
     

  
  
  
  
    
    1024


    

    
    

    
    
   
    
    
    
     
    

    
    true

   
   20

   
   200

    
    false

    
    2

  


  
  
     
    

    
    

  

  
  

  
  
    
      data-config.xml
    
  
    
  
    
     
       explicit
       10
     

    

  
  
     
       explicit
       json
       true
       text
     
  

  
  
    
      {!xport}
      xsort
      false
    

    
      query
    
  


  
    
      text
    
  

  
  


  
  

  
  
    
     explicit 
     true
    
  
  


  

  
  

  
  
     
      true
      false
         
    
      terms
    
  

  
  
    *:*
  


 下面我将对其中关键地方加以解释说明:

 lib

 标签指令可以用来告诉Solr如何去加载solr plugins(Solr插件)依赖的jar包,在solrconfig.xml配置文件的注释中有配置示例,例如:

这里的dir表示一个jar包目录路径,该目录路径是相对于你当前core根目录的;regex表示一个正则表达式,用来过滤文件名的,符合正则表达式的jar文件将会被加载

 

dataDir parameter

用来指定一个solr的索引数据目录,solr创建的索引会存放在data\index目录下,默认dataDir是相对于当前core目录(如果solr_home下存在core的话),如果solr_home下不存在core的话,那dataDir默认就是相对于solr_home啦,不过一般dataDir都在core.properties下配置。

     /var/data/solr

 

codecFactory

 用来设置Lucene倒排索引的编码工厂类,默认实现是官方提供的SchemaCodecFactory类。

 

indexConfig Section

solrconfig.xml标签中间有很多关于此配置项的说明:

   QuerySenderListener用来监听查询发送过程,即你可以在Query请求发送之前追加一些请求参数,如上面给的示例中,可以追加qery关键字以及sort排序规则。

 

设置为false即表示Solr 服务器端不接收/select请求,即如果你请求http://localhost:8080/solr/coreName/select?qt=xxxx时,将会返回一个404

这个select请求是为了兼容先前的旧版本,已经不推荐使用。

 

表示solr服务器段永远不返回304,那http响应状态码304表示什么呢?表示服务器端告诉客户端,你请求的资源尚未被修改过,我返回给你的是上次缓存的内容。Never304即告诉服务器,不管我访问的资源有没有更新过,都给我重新返回不走Http缓存。这属于Http协议相关知识,不清楚的请去Google HTTP协议详细了解去。

 


    
      explicit
      json
      true
    
  

 这个requestHandler配置的是请求URL  /query跟请求处理类SearcherHandler之间的一个映射关系,即你访问http://localhost:8080/solr/coreName/query?q=xxx时,会交给SearcherHandler类来处理这个http请求,你可以配置一些参数来干预SearcherHandler处理细节,比如echoParams表示是否打印HTTP请求参数,wtwriter type,即返回的数据的MIME类型,如json,xml等等,indent表示返回的json或者XML数据是否需要缩进,否则返回的数据没有缩进也没有换行,不利于阅读。

 

其他的一些requestHandler说明就略过了,其实都大同小异,就是一个请求URL跟请求处理类的一个映射,就好比SpringMVC中请求URLController类的一个映射。

 

用来配置查询组件比如SpellCheckComponent拼写检查,有关拼写检查的详细配置说明留到以后说到SpellCheck时再说吧。

 

用来返回所有的Term以及每个documentTerm的出现频率

 

用来配置关键字高亮的,Solr高亮配置的详细说明这里暂时先略过,这篇我们只是先暂时大致了解下每个配置项的含义即可,具体如何使用留到后续再深入研究。

 

有关searchComponent查询组件的其他配置我就不一一说明了,太多了。你们自己看里面的英文注释吧,如果你实在看不懂再来问我。


    
    text/plain; charset=UTF-8

 这个是用来配置Solr响应数据转换类,JSONResponseWriter就是把HTTP响应数据转成JSON格式,content-typeresponse响应头信息中的content-type,即告诉客户端返回的数据的MIME类型为text/plain,且charset字符集编码为UTF-8.

内置的响应数据转换器还有velocityxslt等,如果你想自定义一个基于FreeMarker的转换器,那你需要实现SolrQueryResponseWriter接口,模仿其他实现类,你懂的,然后在solrconfig.xml中添加类似的配置即可

 

   最后需要说明下的是solrconfig.xml中有大量类似 这样的自定义标签,下面做个统一的说明:
跟益达学Solr5之solrconfig.xml配置详解_第2张图片
 
这张图摘自于Solr in Action这本书,由于是英文的,所以我稍微解释下:

arr:array的缩写,表示一个数组,name即表示这个数组参数的变量名

lstlist的缩写,但注意它里面存放的是key-value键值对

bool表示一个boolean类型的变量,name表示boolean变量名,

同理还有int,long,float,str等等

Strstring的缩写,唯一要注意的是arr下的str子元素是没有name属性的,而list下的str元素是有name属性的

 

最后总结下:

solrconfig.xml中的配置项主要分以下几大块:

     1.依赖的lucene版本配置,这决定了你创建的Lucene索引结构,因为Lucene各版本之间的索引结构并不是完全兼容的,这个需要引起你的注意。

     2.索引创建相关的配置,如索引目录,IndexWriterConfig类中的相关配置(它决定了你的索引创建性能)

     3.solrconfig.xml中依赖的外部jar包加载路径配置

     4.JMX相关配置

     5.缓存相关配置,缓存包括过滤器缓存,查询结果集缓存,Document缓存,以及自定义缓存等等

     6.updateHandler配置即索引更新操作相关配置

     7.RequestHandler相关配置,即接收客户端HTTP请求的处理类配置

     8.查询组件配置如HightLightSpellChecker等等

     9.ResponseWriter配置即响应数据转换器相关配置,决定了响应数据是以什么样格式返回给客户端的。

     10.自定义ValueSourceParser配置,用来干预Document的权重、评分,排序

 

     solrconfig.xml就解释到这儿了,理解这些配置项是为后续Solr学习扫清障碍。有些我没说到的或者我有意略过的,就留给你们自己去阅读和理解了,毕竟内容太多,1000多行的配置,一行不拉的解释完太耗时,有些都是类似的配置,我想你们应该能看懂。

  如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,

或者加裙
一起交流学习!

 

 

你可能感兴趣的:(Solr)