原文http://www.tuicool.com/articles/R3AZvub
lib
这里的 dir 表示一个 jar 包目录路径,该目录路径是相对于你当前 core 根目录的; regex 表示一个正则表达式,用来过滤文件名的,符合正则表达式的 jar 文件将会被加载
用来指定一个 solr 的索引数据目录, solr 创建的索引会存放在 data\index 目录下,默认 dataDir 是相对于当前 core 目录 ( 如果 solr_home 下存在 core 的话 ) ,如果 solr_home 下不存在 core的话,那 dataDir 默认就是相对于 solr_home 啦,不过一般 dataDir 都在 core.properties 下配置。
用来设置Lucene倒排索引的编码工厂类,默认实现是官方提供的SchemaCodecFactory类。
在 solrconfig.xml 的
arr> </listener>
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 协议详细了解去。
"/query" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicitstr>
<str name="wt">jsonstr>
<str name="indent">truestr>
lst>
</requestHandler>
这个 requestHandler 配置的是请求 URL /query 跟请求处理类 SearcherHandler 之间的一个映射关系,即你访问 http://localhost:8080/solr/coreName/query?q=xxx 时,会交给 SearcherHandler 类来处理这个 http 请求,你可以配置一些参数来干预 SearcherHandler 处理细节,比如 echoParams 表示是否打印 HTTP 请求参数, wt 即 writer type, 即返回的数据的 MIME 类型,如 json,xml 等等, indent 表示返回的 json 或者 XML 数据是否需要缩进,否则返回的数据没有缩进也没有换行,不利于阅读。
其他的一些 requestHandler 说明就略过了,其实都大同小异,就是一个请求 URL 跟请求处理类的一个映射 , 就好比 SpringMVC 中请求 URL 和 Controller 类的一个映射。
用来配置查询组件比如 SpellCheckComponent 拼写检查,有关拼写检查的详细配置说明留到以后说到 SpellCheck 时再说吧。
用来返回所有的 Term 以及每个 document 中 Term 的出现频率
用来配置关键字高亮的, Solr 高亮配置的详细说明这里暂时先略过,这篇我们只是先暂时大致了解下每个配置项的含义即可,具体如何使用留到后续再深入研究。
有关 searchComponent 查询组件的其他配置我就不一一说明了,太多了。你们自己看里面的英文注释吧,如果你实在看不懂再来问我。
"json" class="solr.JSONResponseWriter">
<str name="content-type">text/plain; charset=UTF-8str>
queryResponseWriter>
这个是用来配置 Solr 响应数据转换类, JSONResponseWriter 就是把 HTTP 响应数据转成 JSON 格式, content-type 即 response 响应头信息中的 content-type, 即告诉客户端返回的数据的MIME 类型为 text/plain ,且 charset 字符集编码为 UTF-8.
内置的响应数据转换器还有 velocity , xslt 等,如果你想自定义一个基于 FreeMarker 的转换器,那你需要实现 Solr 的 QueryResponseWriter 接口,模仿其他实现类,你懂的,然后在 solrconfig.xml 中添加类似的 最后需要说明下的是 solrconfig.xml 中有大量类似 这样的自定义标签,下面做个统一的说明: arr: 即 array 的缩写,表示一个数组, name 即表示这个数组参数的变量名 lst 即 list 的缩写,但注意它里面存放的是 key-value 键值对 bool 表示一个 boolean 类型的变量 ,name 表示 boolean 变量名, 同理还有 int,long,float,str 等等 Str 即 string 的缩写,唯一要注意的是 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. 查询组件配置如 HightLight , SpellChecker 等等 9.ResponseWriter 配置即响应数据转换器相关配置,决定了响应数据是以什么样格式返回给客户端的。 10. 自定义 ValueSourceParser 配置,用来干预 Document 的权重、评分,排序 solrconfig.xml 就解释到这儿了,理解这些配置项是为后续 Solr 学习扫清障碍。有些我没说到的或者我有意略过的,就留给你们自己去阅读和理解了,毕竟内容太多, 1000 多行的配置,一行不拉的解释完太耗时,有些都是类似的配置,我想你们应该能看懂。 如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5, 或者加裙 一起交流学习!
最后总结下: