Solr solrconfig.xml 配置
luceneMatchVersion
|
|
solr 底层使用的 lucene 版本
dataDir
|
|
配置索引数据文件存放的目录,默认的目录是 $SOLR_HOME/data
directoryFactory
|
|
目录工厂,决定了索引存储的方式。
工厂 | 描述 |
---|---|
StandardDirectoryFactory | 基于文件系统,依赖当前操作系统和 java 虚拟机 |
MMapDirectoryFactory | 使用虚拟内存和内核中一个叫 mmap 的特性来访问存在磁盘中的索引文件。 它允许 Lucene 直接访问 I/O 缓存,当不需要近实时搜索(Near Real Time Search),这是一个不错的选择 |
NIOFSDirectoryFactory | 适用于多线程环境,在 Windows 平台不能很好的工作 |
NRTCachingDirectoryFactory | 将部分索引存储在内存中,提升近实时搜索(Near Real Time Search)的效率 |
SimpleFSDirectoryFactory | 适用于小型应用程序,不支持大数据和多线程 |
RAMDirectoryFactory | 索引存储在 RAM 内存中,不支持持久化存储。服务重启等会造成索引丢失 |
updateHandler
|
|
设置索引库的更新日志,默认的目录是 $SOLR_HOME/data/tlog
|
|
设置自动硬提交的方式。自动硬提交对性能有一定的影响,它确保索引数据同步到磁盘,因此不会因为宕机等异常状况而造成大量数据丢失。硬提交后的文档是不可见的,需要重新打开一个新的 Searcher,才能看得见变化
参数 | 描述 |
---|---|
maxDocs | 设置达到多少个文档时提交一次 |
maxTime | 设置达到多长时间时提交一次 |
openSearcher | 文档提交后是否开启新的 Searcher false:文档只是提交到索引库,搜索结果中搜不到此次提交的文档 true :文档提交到索引库,搜索结果中也能搜到此次提交的文档 |
|
|
自动软提交,只确保变化是看得见的,但不保证数据同步到磁盘。软提交后的文档立即可用
query
|
|
条件搜索时,会产生大量的 boolean 条件,如果条件数达到设定的这个阀值时,将抛出异常,限制这个条件数,可以防止条件过多查询等待时间过长
|
|
配置过滤器缓存。filterCache 存储了无序的文档的 ID 集合。如 filter queries("fq" 参数)得到的文档的 ID 集合结果等
LRUCache 是基于 LinkedHashMap,读写操作都是对 map 的全局锁,并发性方面稍差
FastLRUCache 是基于 ConcurrentHashMap ,具有更快的读取能力和较好的并发性能
参数 | 描述 |
---|---|
size | 缓存中的最大数目 |
initialSize | 初始容量 |
autowarmCount | 当打开一个新的 Searcher 时,可以对新的 Searcher 做预热处理。即从老的 Searcher 中取该值指定的缓存条目数目填充到新的 Searcher 中。如果使用的是 LRUCache,则取最近访问的条目填充到新的 Searcher 中 |
|
|
配置查询结果缓存。查询结果缓存的是查询条件的结果的有序文档的 ID 集合。同 filterCache 参数
|
|
配置文档缓存。文档缓存的是 < 文档 ID, 文档对象 > 键值对。参数与 filterCache 同
|
|
配置字段值缓存。字段缓存使用文档 ID 进行快速访问。默认情况下创建 fieldValueCache,即使这里没有配置
|
|
是否允许字段延迟加载。若为 true,非必须字段(required = "false")将被延迟加载,特别是一些大的压缩文本字段,延迟加载可以提升性能
|
|
优化 queryResultCache(查询结果缓存)。如从查询结果每次取匹配的 10 个文档,如 10 到 19,那么文档 0 到 49 将被用来收集和缓存条目用。下次请求 20 到 39 的数据时,直接命中缓存,很快就能拿到结果。该值越大,查询结果缓存的文档的 ID 集合就越大,命中缓存的概率也就越大,但是这样也会很浪费内存
|
|
查询结果最大缓存的文档的数目。
|
|
是否使用冷搜索。当一个搜索请求到来时,如果当前没有注册的搜索可用,那么将立即注册一个,并且需等到自热后才能使用它。若该值为 false,那么,所有的搜索请求将阻塞在第一个搜索,直到第一个搜索注册并自热完成
|
|
设置最大的 Searcher 数量,这些 Searcher 都是事先预热好的,随时可以使用。如果超过这个数量,将会报错。
在一个只读的索引库中,2 个预热的 Searcher 是相对合理的;如果是读写的索引库中,可以给一个相对大一点的值
|
|
配置请求分发器。当访问的 URL 为 /select,如 /select?qt=xxx
若 handleSelect="true",SolrDispatchFilter 将请求转发给 qt 指定的处理器(前提是 /select 已经注册)
当 handleSelect="false" 时会直接访问 /select,若 /select 未注册则报 404
|
|
配置请求处理器。更多参数见如下表格
查询参数 | 描述 |
---|---|
q | 查询字符串 |
start | 用于分页查询的结果。指定第一条记录在查询结果中的偏移量。默认值为 0 |
rows | 指定从搜索结果中取多少条数据。与 start 配合使用 |
sort | 搜索结果排序。默认为 score desc(按文档的得分降序排序) |
fl | 用来指定文档结果中应返回的字段列表。多个字段之间用逗号分隔,默认为 "*" 指返回所有的字段。score 返回文档的得分,如: *,score |
q.alt | 当查询串 q 为空时,使用该值,通常设置 q.alt 为 *:* |
wt | 指定查询结果输出的格式,如 json,xml 等,默认为 xml 格式 |
fq | 过滤查询。在 q 查询的结果中,再用 fq 条件过滤一次结果 |
q.op | 搜索串中有空格时,使用 OR 逻辑 还是 AND 逻辑 |
df | 指定默认的查询字段 |
qt | 当访问的 url 为 /select,如 /select?qt=xxx,solr 将使用 qt 参数的值来确定使用哪个 requestHandler 来处理查询请求 |
indent | 返回的结果是否缩进,默认关闭,一般调试输出才有必要用这个参数 |
echoParams | 是否显示查询参数。none:不显示;explicit:只显示查询参数;all:显示所有的参数 |
qf | 指定从哪些字段中查询,如果没有配置,则使用 df 的值 |
defType | 指定处理查询的 Query Parser。如 defType=lucene (Standard Query Parser) defType=dismax (DisMax Query Parser) defType=edismax(Extended DisMax Query Parser) |