solr的索引库core相关配置解析

1.core的概念

2.目录结构

conf目录中有两个非常重要的配置文件:schema.xml和solrconfig.xml

3.配置详解  

  core.properties

  schemal.xml

  solrconfig.xml

  3.1 core.properties

Core的属性文件,记录当前core的名称、索引位置、配置文件名称等信息,也可以不写。主要用于修改名字

  3.2 schema.xml

Solr中会提前对文档中的字段进行定义,并且在schema.xml中对这些字段的属性进行约束,例如:字段数据类型、字段是否索引、是否存储、是否分词等等

1)通过Field字段定义字段的属性信息:

属性及含义:

name:字段名称

type:字段类型,指向的是本文件中的<fieldType>标签

indexed:是否创建索引

stored:是否被存储

multiValued:是否可以有多个值,如果字段可以有多个值,设置为true

注意:在本文件中,有两个字段是Solr自带的字段,绝对不要删除:_version节点和_root节点

2)通过FieldType指定数据类型

name:字段类型的名称,可以自定义,<field>标签的type属性可以引用该字段,来指定数据类型

class:字段类型在Solr中的类。StrField可索引不可分词。TextField字段可索引,可以分词,所以需要指定分词器

<analyzer>:这个子标签用来指定分词器

3)唯一主键

Lucene中本来是没有主键的。删除和修改都需要根据词条进行匹配。而Solr却可以设置一个字段为唯一主键,这样增删改操作都可以根据主键来进行!

4)动态字段

  用于匹配类型,一般不用

3.3  solrconfig.xml

这个配置文件主要配置跟索引库和请求处理相关的配置。solr服务的优化主要通过这个配置文件进行:

solrconfig.xml配置文件支持使用变量,格式如下:${propertyname[:option default value]}冒号后面的是缺省值,冒号前面的值可以来自于:

1)JVM的-D参数,比如:bin/solr start -Dpropertyname=none

2).properties等配置文件,比如core.properties文件

<lib/>标签:

  • 用途:配置插件依赖的jar包
  • 注意事项:
    • 如果引入多个jar包,要注意包和包的依赖关系,被依赖的包配置在前面
    • 这里的jar包目录如果是相对路径,那么是相对于core所在目录

例如,在配置文件中默认有以下配置:

这些是Solr中插件所依赖的Jar包

这里的相对路径其实是相对于 core所在目录。

建议不修改,,,我们把所以来的Jar包复制到solr的HOME中:

然后修改配置文件:

<requestHandler/>标签:

  • 用途:配置Solr处理各种请求(搜索/select、更新索引/update、等)的各种参数
  • 主要参数:
    • name:请求类型,例如:select、query、get、update
    • class:处理请求的类
    • initParams:可选。引用<initParams>标签中的配置
    • <lst name="defaults">:定义各种缺省的配置,比如缺省的parser、缺省返回条数

例子: 负责搜索请求的Handler

这里有一个默认选项:rows=10 ,就是设置默认查10条数据

<str name=”df”> text</str> 这个是设置默认搜索的字段为:text,我们可以设置为title,因为我们没有text字段

<initParams/>标签:

  • 用途:为一些requestHandlers定义通用的配置,以便在一个地方修改后,所有地方都生效
  • 主要参数:
    • path:指明该配置应用于哪些请求路径,多个 的话用逗号分开,可以用通配符(*表示一层子路径,**表示无限层)
    • name:如果不指定path,可以指定一个name,然后在<requestHander>配置中可以引用这个name

例子(配置一个缺省的df):  <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">    <lst name="defaults">      <str name="df">_text_</str>    </lst>  </initParams>
如果配置name,在<requestHander>中引用的例子:<requestHandler name="/dump1" class="DumpRequestHandler"  initParams="myParams"/>

<updateHandler/>标签:

  • 用途:定义一些更新索引相关的参数,比如定义commit的时机
  • 主要参数:
    • autoCommit:定义自动commit的触发条件。如果没配置这个参数,则每次都必须手动commit

      • maxDocs
      • maxTime(毫秒)
      • openSearcher:autoCommit结束后,是否开启一个新的searcher让更改生效。缺省为false
    • autoSoftCommit:定义自动softCommit的触发条件。相关参数同autoCommit
    • listener:配置事件监听器
      • event:监听哪个事件,比如:event="postCommit", event="postOptimize"
      • class:处理的类,可以是自己的实现类。如果是RunExecutableListener,可以配置下面的参数:
        • exe:可执行文件,包括Solr Home的相对路径和文件名
        • dir:工作目录,缺省是“.”
        • wait: 调用者是否等待可执行文件执行结束,缺省是true
        • args:传递给可执行文件的参数
        • env:其他所需要的环境变量
    • updateLog:配置log的保存路径、等
      • dir:保存路径
      • numRecordsToKeep:一个log保存的记录数,缺省为100
      • maxNumLogsToKeep:log的数量,缺省为10
      • numversionBuckets:追踪max version的bucket数量(?),缺省为65535

配置这些参数要考虑到搜索的准确度和性能的平衡。^_^
注:commit和softCommit:

  • commit:正式提交、对索引的修改会被保存到永久存储中(比如磁盘),会比较耗时
  • softCommit:软提交,对索引的修改会被立即应用到工作中的索引中,即立即生效,但没有保存进磁盘

<query/>标签:

  • 用途:配置Solr如何处理和返回搜索的相关参数
  • 主要参数:
    • filterCache:当搜索带有“fq”参数时,使用这个配置,它保存未经过排序的所有文档

      • class:实现类,有三种:solr.search.LRUCache, solr.search.FastLRUCache, solr.search.LFUCache
      • size:最大保存的记录数量
      • initialSize:初始数量
      • autowarmCount:新Index Searcher启动的时候从旧的Index Searcher缓存拷贝过来的数据量
    • queryResultCache:存储最终的搜索结果(排序后的、有范围的文档id)
      • class:实现类,有三种:solr.search.LRUCache, solr.search.FastLRUCache, solr.search.LFUCache
      • size:最大保存的记录数量
      • initialSize:初始数量
      • autowarmCount:新Index Searcher启动的时候从旧的Index Searcher缓存拷贝过来的数据量
      • maxRamMB:最大分配的容量(兆)
    • documentCache:缓存Lucene Document对象(就是每个文档的fields)
      • class:实现类,有三种:solr.search.LRUCache, solr.search.FastLRUCache, solr.search.LFUCache
      • size:最大保存的记录数量
      • initialSize:初始数量
      • autowarmCount:因为Lucene的内部文档 id 是临时的,所以这个缓存不应该被auto-warm,这个值应该为“0”
    • cache:配置自定义的缓存,通过SolrIndexSearcher类的getCache()方法和name参数调用这个缓存
      • name:被调用时的标识
      • 其他参数同上
    • maxBooleanClauses:BooleanQuery的最大子句数量
    • enableLazyFieldLoading:没有知道被请求的field是否懒加载,true/false
    • useFilterForSortedQuery:如果不是按照score排序,是否从filterCache中获取数据
    • queryResultWindowsize:配合queryResultCache使用,缓存一个超集。如果搜索请求第10到19条记录,而这个参数是50,那么会缓存0到49条记录
    • queryResultMaxDocsCached:queryResultCache缓存的最大文档数量
    • useColdSearcher:但一个新searcher正在warm-up的时候,新请求是使用旧是searcher(true)还是等待新的search(false)
    • maxWarmingSearchers:定义同时在warn-up的searcher的最大数量
    • listener:监听一些事件并指定处理的类,比如在solr启动时加载一些数据到缓存中,相关参数:
      • event:被监听的事件,比如:firstSearcher是第一个searcher启动、也就是solr启动的事件,newSearcher是当已经有searcher在运行的时候有新searcher启动的事件
      • class:处理类
      • name:="queries"就是需要处理的是query
        • lst, name:针对哪些搜索条件需要处理

<requestDispatcher/>标签:

  • 用途:控制Solr HTTP RequestDispatche r响应请求的方式,比如:是否处理/select url、是否支持对流的处理、上传文件的大小、如何处理带有cache头的HTTP请求、等等
  • 主要参数:
    • handleSelect:true/false,如果是false,则由requestHandler来处理/select请求。因为现在的requestHandler中/select是标配,所以这里应该填false
    • requestParsers:
      • enableRemoteStreaming:是否接受流格式的内容,缺省为ture
      • multipartUploadLimitInKB:multi-part POST请求,上传文件的大小上限(K)
      • formdataUploadLimitInKB:HTTP POST的form data大小上限(K)
      • addHttpRequestToContext:原始的HttpServletRequest对象是否应该被包含在SolrQueryRequest的httpRequest中……一般自定义的插件使用这个参数……
    • httpCaching:如何处理带有cache control头的HTTP请求
      • nerver304:如果设为true(开发阶段),则就算所请求的内容没被修改,也不会返回304,并且下面两个参数会失效
      • lastModFrom:最后修改时间的计算方式,openTime:Searcher启动的时刻;dirLastMod:索引更新的时刻
      • etagSeed:HTTP返回的ETag头内容
      • cacheControl:HTTP返回的Cache-Control头内容

<updateProcessor/>和<updateProcessorChain/>标签:

    • 用途:配置处理update请求的处理器、处理器链。如果不配置的话,Solr会使用缺省的三个处理器:

      • LogUpdateProcessorFactory:追踪和记录日志
      • DistributedUpdateProcessorFactory:分流update请求到不同的node,比如SolrCloud的情况下把请求分配给一个shard的leader,然后把更新应用到所有replica中
      • RunUpdateProcessorFactory:调用Solr的内部API执行update操作
    • 如果需要自定义update处理器:
      • updateProcessor:

        • class:负责处理的类
        • name:名字,给updateProcessorChain引用是使用
      • updateProcessorChain:
        • name:自己的名字标记
        • processor:指定updateProcessor的name,多个的话用逗号“,”分开
时间: 2024-08-22 07:59:11

solr的索引库core相关配置解析的相关文章

Solr管理索引库——(十三)

a)          维护索引 1.  添加/更新文档 添加或更新单个文档 2.   批量导入数据(导入mysql的) 使用dataimport插件批量导入数据. 第一步:把dataimport插件依赖的jar包添加到solrcore(collection1\lib)中 还需要mysql的数据库驱动. 第二步:配置solrconfig.xml文件,添加一个requestHandler. <requestHandler name="/dataimport" class="

【Solr】索引库查询界面详解

目录 索引库查询界面详解 回到顶部 索引库查询界面详解 q:主查询条件.完全支持lucene语法.还进行了扩展. fq:过滤查询.是在主查询条件查询结果的基础上进行过滤.例如:product_price:[10 TO 20] sort:排序条件.排序的域asc.如果有多个排序条件使用半角逗号分隔. start, rows:分页处理.Start起始记录rows每页显示的记录条数. fl:返回结果中域的列表.使用半角逗号分隔. df:默认搜索域. wt:响应结果的数据格式,可以是json.xml等.

Zeroc Ice 3.6.1 生成 vs2015 c++ 版本库及相关配置

背景: 目前发布的Ice最新版本为3.6.0,使用的vs2013编译的,vs2015版本正在开发,发布只是时间问题: 不过官方实在给力,github上的源码已经支持vs2015编译了.源码版本为3.6.1 开发环境: 64位Win7旗舰版 + vs2015企业版 正题: 1.编译及安装Ice 从github上下载ice3.6.1的源码,按照https://github.com/zeroc-ice/ice/blob/master/cpp/BuildInstructionsWindows.md说明进

linux下svn的建库以及相关配置

1.安装svn软件 yum install subversion -y 2.建立库的根目录,此目录下为所有库的根目录(路径为:/home/svn-server/) ,然后进入此目录 mkdir /home/svn-server/ cd /home/svn-server/ 3.在根目录下建立库svn库test svnadmin create test 4.进入svn版本库目录的conf目录,修改svnserve.conf文件 将[general]下 #anon-access = read #aut

JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再对索引进行搜索的过程叫全文检索 4. 索引是什么? 非结构数据中提取一个数据.并重新组合的过程叫索引 5. Lucene实现 6. 入门程序 磁盘文件为原始文件 创建索引 第一步:获取文件 第二步:创建文档对象 第三步:创建分析器 第四步:保存索引及文档到索引库 搜索索引 第一步:用户接口(百度)

维护solr索引库

一 2)solrcore    一个solr下可以有多个solrcore,每个solrcore就是一个独立的索引库3)solrconfig.xml    lib:配置solr的扩展包的位置,不指定路径的话就是collection1/lib目录,可以自动加载.如果没有需要手动创建    dataDir:索引文件保存的位置.如果不指定默认是Collection1/data目录.如果没有会自动生成    requestHandler:请求的url及对应的处理器的配置4)添加solrcore    1.

将数据库的数据导入solr索引库中

在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例. 首先要准备jar包:solr-dataimporthandler-4.8.1.jar.solr-dataimporthandler-extras-4.8.1.jar和mysql-connector-java-5.0.7-bin.jar这三个包到solr的tomcat的webapps\solr\WEB-INF\lib下 在这个文件夹的conf下配置两个文件,添加一个文件.先配置solrconfig.xml. 在该文

使用solrj操作solr索引库

(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有那么麻烦,solr配套有好多的客户端用于操作索引库,下面我们来讲如何用solrj去操作solr索引库. 一.认识solrj solrj是solr的java客户端,用于访问solr索引库.它提供了添加.删除.查询.优化等功能. 二.下载 百度.google以下solrj下载,你会发现根本就没有,那么我们该到哪儿

solr相关配置

这段时间突然让我接手solr这个搜索引擎,为了让自己以后方便查阅,故记录下solr整个部署过程. 1.先上官网下载源码 源码下载 2.因为我是用tomcat来部署solr的,所以事先下载好tomcat jdk并配置好环境. 3.解压solr,此时的文件应该是这样的 4.复制server/solr/solr-webapp目录下的webapp到tomcat的webapps目录下,并重命名为solr(名字随意).如果不想放在tomcat目录下的话,选择一个盘符放好,并修改tomcat/conf/ser