solrsolr data config.xmll 路劲在什么地方配置

java solr(36)
&&solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置。
&&&&&&可以在tomcat的安装路径下找到这个文件C:\Program Files\Apache Software Foundation\Tomcat 8.0\solr\collection1\conf
&&&&&&&1.datadir节点
&&&&& && 1.${solr.data.dir:d:/Server/Solr/data}&/dataDir&定义了索引数据和日志文件的存放位置
&&&&&2.luceneMatchVersion
&&&&&&&& &&&&4.8&/luceneMatchVersion&
&&&&&&&&&&表示solr底层使用的是lucene4.8
&&&&&&3. lib
&&&&&&&&&&&&
&&&&&&&& 表示solr引用包的位置,当dir对应的目录不存在时候,会忽略此属性
&&&&&&4.directoryFactory
&&&&&&&&&&索引存储方案,共有以下存储方案
&&&&&&&&&& 1、solr.StandardDirectoryFactory,这是一个基于文件系统存储目录的工厂,它会试图选择最好的实现基于你当前的操作系统和Java虚拟机版本。
&&&&&&&&&& 2、solr.SimpleFSDirectoryFactory,适用于小型应用程序,不支持大数据和多线程。
&&&&&&&&&& 3、solr.NIOFSDirectoryFactory,适用于多线程环境,但是不适用在windows平台(很慢),是因为JVM还存在bug。
&&&&&&&&&& 4、solr.MMapDirectoryFactory,这个是solr3.1到4.0版本在linux64位系统下默认的实现。它是通过使用虚拟内存和内核特性调用
&&&&&&&&&&&& mmap去访问存储在磁盘中的索引文件。它允许lucene或solr直接访问I/O缓存。如果不需要近实时搜索功能,使用此工厂是个不错的方案。
&&&&&&&&&& 5、solr.NRTCachingDirectoryFactory,此工厂设计目的是存储部分索引在内存中,从而加快了近实时搜索的速度。
&&&&&&&&&& 6、solr.RAMDirectoryFactory,这是一个内存存储方案,不能持久化存储,在系统重启或服务器crash时数据会丢失。且不支持索引复制
&&&&&&&&&&&&&5. codecFactory
&&&&&&&&&&&&&&&&&&&编解码工厂允许使用自定义的编解码器。例如:如果想启动per-field DocValues格式, 可以在solrconfig.xml里面设置SchemaCodecFactory:
&&&&&&&&&&&&&&&&&&&&docValuesFormat=&Lucene42&: 这是默认设置,所有数据会被加载到堆内存中。
&&&&&&&&& docValuesFormat=&Disk&: 这是另外一个实现,将部分数据存储在磁盘上。
&&&&&&&&& docValuesFormat=&SimpleText&: 文本格式,非常慢,用于学习。
&&&&&&&&&&&&&&&&& &codecFactory class=&solr.SchemaCodecFactory&/&
&&&&&&&&&&&&&&&&& &schemaFactory class=&ClassicIndexSchemaFactory&/&
&&&&&&&&&&&&6.indexconfig节点
&&&&&&&&&&&&&&&&&用于设置索引的低级别的属性
&&&&&&1、&filter class=&solr.LimitTokenCountFilterFactory& maxTokenCount=&10000&/&//限制token最大长度
&&&&&&2、&writeLockTimeout&1000&/writeLockTimeout&//IndexWriter等待解锁的最长时间(毫秒)。
&&&&&&3、&maxIndexingThreads&8&/maxIndexingThreads&//
&&&&&&4、&useCompoundFile&false&/useCompoundFile&//solr默认为false。如果为true,索引文件减少,检索性能降低,追求平衡。
&&&&&&5、&ramBufferSizeMB&100&/ramBufferSizeMB&//缓存
&&&&&&6、&maxBufferedDocs&1000&/maxBufferedDocs&//同上。两个同时定义时命中较低的那个。
&&&&& 7、&mergePolicy class=&org.apache.lucene.index.TieredMergePolicy&&
&&&&&&&& &int name=&maxMergeAtOnce&&10&/int&
&&&&&&&&& &int name=&segmentsPerTier&&10&/int&
&&&&&&&& &/mergePolicy&
&&&&&&&& &//合并策略。
&&&&& 8、&mergeFactor&10&/mergeFactor&//合并因子,每次合并多少个segments。
&&&&& 9、&mergeScheduler class=&org.apache.lucene.index.ConcurrentMergeScheduler&/&//合并调度器。
&&&& 10、&lockType&${solr.lock.type:native}&/lockType&//锁工厂。
&&&& 11、&unlockOnStartup&false&/unlockOnStartup&//是否启动时先解锁。
&&&& 12、&termIndexInterval&128&/termIndexInterval&//Lucene loads terms into memory 间隔
&&&& 13、&reopenReaders&true&/reopenReaders&//重新打开,替代先关闭-再打开。
&&&& 14、&deletionPolicy class=&solr.SolrDeletionPolicy&&//提交删除策略,必须实现org.apache.lucene.index.IndexDeletionPolicy
&&&& 15、&str name=&maxCommitsToKeep&&1&/str&
&&&& 16、&str name=&maxOptimizedCommitsToKeep&&0&/str&
&&&&&17、&str name=&maxCommitAge&&30MINUTES&/str& OR &str name=&maxCommitAge&&1DAY&/str&&br&   
&&   18、&& &infoStream&&&file=&INFOSTREAM.txt&&false&/infoStream&//相当于把创建索引时的日志输出。
&&&&&&&lockType&${solr.lock.type:native}&/lockType&
&&&&&& 设置索引库的锁方式,主要有三种:
&&&&&&& 1.single:适用于只读的索引库,即索引库是定死的,不会再更改
&&&&&&& 2.native:使用本地操作系统的文件锁方式,不能用于多个solr服务共用同一个索引库。Solr3.6 及后期版本使用的默认锁机制。
&&&&&&& 3.simple:使用简单的文件锁机制
&&&&7. updateHandler节点
&&&&&&&&&& 定义更新处理器,
&&&&&&&&&&&&&&&&设置索引库更新日志,默认路径为solr home下面的data/tlog。随着索引库的频繁更新,tlog文件会越来越大,
&&&&&&&&所以建议提交索引时采用硬提交方式&autoCommit&,即批量提交。&&&&&&&
&&&&&&&& &自动硬提交方式:maxTime:设置多长时间提交一次maxDocs:设置达到多少文档提交一次openSearcher:文档提交后是否开启新的searcher,
&&&&&&&&& 如果false,文档只是提交到index索引库,搜索结果中搜不到此次提交的文档;如果true,既提交到index索引库,也能在搜索结果中搜到此次提交的内容。
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&& 8.Query查询节点
&&&&&&&&&&&& &maxBooleanClauses&1024&/maxBooleanClauses&
&&&&&&&&&&&& 设置boolean 查询中,最大条件数。在范围搜索或者前缀搜索时,会产生大量的 boolean 条件,
&&&&&&&&&&&& 如果条件数达到这个数值时,将抛出异常,限制这个条件数,可以防止条件过多查询等待时间过长。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&缓存方法
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&& & 9.Request Dispatcher
&&&&&&&&&&&&&&&&&&&&&&&&请求转发器
&&&&&&&&&&&
&&&&&&&&&10.requestHandler
&&&&&&&&&&&&&&&&&&&&&&&&&&请求处理器
&&&&&&&&&&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:148117次
积分:2808
积分:2808
排名:第9868名
原创:114篇
转载:146篇
评论:11条
(2)(22)(35)(55)(25)(17)(24)(22)(25)(5)(20)(1)(2)(10)学习使用solr(一),solr和tomcat的配置及数据库中表的全量索引(下) -
- ITeye技术网站
博客分类:
在tomcat中部署好了solr之后,接下来就要对数据库中的表建立索引了。
首先回顾一下文件的结构:
tomcat的$CATALINA_HOME是/usr/local/tomcat-solr-blog,solr的$SOLR_HOME是/usr/local/tomcat-solr-blog/solr。具体的情况可以去大体看一下上一篇文章:
第二步,为数据库中的表建立全量索引。
我此次建立的索引是针对一张表的,多张表的还没研究。
首先说一下我所索引的数据表的结构和数据吧,为了简单起见,一张图就表示了它。由下图可见,我的数据表格里就有两列,一列int型的solr_id,一列varchar型的solr_text。数据是李白的《静夜思》。由于我只完成了全索引的建立,所以此处对数据没什么要求。
有了数据之后就开始对此表建立全索引了。
1,先要修改solrconfig.xml文件,它存在于$SOLR_HOME/conf(此处的路径问题可以去上里查找,一般看到这篇文章的应该都知道在哪里可以找得到solrconfig.xml)。在其中增加如下配置:
&requestHandler name = "/dataimport" class = "org.apache.solr.handler.dataimport.DataImportHandler"&
&lst name = "defaults"&
&str name = "config"&data-config.xml&/str&
&/requestHandler&
增加好了之后,先重启一下tomcat看看有什么问题。启动tomcat,查看日志发现报了一个错误:
Error loading class 'org.apache.solr.handler.dataimport.DataImportHandler'
在加载DataImportHandler时出错了,这是因为没有往项目里面导入apache-solr-dataimporthandler-3.6.2.jar这个jar包。好了,这里我碰到了一个没有解决的问题。现在看solrconfig.xml这个文件当中的某段配置,如下:
&lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" /&
&lib dir="../../contrib/extraction/lib" regex=".*\.jar" /&
&lib dir="../../dist/" regex="apache-solr-clustering-\d.*\.jar" /&
&lib dir="../../contrib/clustering/lib/" regex=".*\.jar" /&
&lib dir="../../dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" /&
&lib dir="../../contrib/dataimporthandler/lib/" regex=".*\.jar" /&
&lib dir="../../dist/" regex="apache-solr-langid-\d.*\.jar" /&
&lib dir="../../contrib/langid/lib/" regex=".*\.jar" /&
&lib dir="../../dist/" regex="apache-solr-velocity-\d.*\.jar" /&
&lib dir="../../contrib/velocity/lib" regex=".*\.jar" /&
观察这段代码不难发现,它正密集的指出了一些jar包所在的位置,其中有这样一项,
&lib dir="../../dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" /&
似乎为我指明了我的apache-solr-dataimporthandler-3.6.2.jar包应该放在哪里。于是我按照路径,在配置文件往上两级建立了dist文件夹,并将jar包放进去。再重启tomcat。发现没用……这里,促使我开始研究tomcat的原理了。
其实这个问题很好解决,直接找到/usr/local/tomcat-solr-blog/webapps/solr-example/WEB-INF/lib,将jar包拖进去,再重启tomcat看看。报了一个新错误:Can't find resource 'data-config.xml'。接下来就来建立data-config.xml文件。
2,在solrconfig.xml的同级目录下,新建data-config.xml,并且填入内容如下:
&dataConfig&
&dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://host/db_name"
user="root"
password="****"/&
&document&
&entity name="solr_test"
query="select solr_id,solr_text from solr_test"&
&/document&
&/dataConfig&
这个xml文件的各项都很好理解,显示配置了数据库的驱动,地址,用户名和密码。然后又对对哪个表建立索引进行了配置,先按照这个配置去写,这是最简单的全量配置的写法。
新建完了之后要把数据库的驱动的jar包加到工程里面,我将mysql驱动的jar包也放到了/usr/local/tomcat-solr-blog/webapps/solr-example/WEB-INF/lib之下。然后再重启tomcat看看情况。启动成功,没有报错。但此时还没建立全量索引。只能说明连接数据库的部分没有出错。好吧,最后一步,配置schema.xml文件。
3,改写schema.xml文件。首先找到schema.xml,它也跟solrconfig.xml是属于同级目录。打开来看一下,发现这个文件好长,有好多的配置项和注释啊。所以,我就简化了一下,把我不需要的全部删掉,最后删减玩的schema.xml是下面这个样子。
&?xml version="1.0" encoding="UTF-8" ?&
&schema name="example" version="1.5"&
&fieldType name="string" class="solr.StrField" sortMissingLast="true" /&
&fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/&
&field name="solr_id" type="int" indexed="true" stored="true" /&
&field name="solr_text"
type="string" indexed="true" stored="true"/&
&uniqueKey&solr_id&/uniqueKey&
我只选取了比较重要的几个节点,&types&定义了field的类型,在此我需要int和string,&fields&相当于是数据表里的字段,跟data-config.xml及数据库中的字段都是对应的,你要对哪些个字段建索引,就要写哪些个字段。最后是个主键。关于schema.xml的详细解释,可以去百度一下。修改完成后,再重启一下tomcat。报了一个错误,仔细看一下有两点很重要,Error initializing QueryElevationComponent.和For input string: "MA147LL/A"。解释这个问题,就要先看一下solrconfig.xml这个文件中有如下配置:
&searchComponent name="elevator" class="solr.QueryElevationComponent" &
&!-- pick a fieldType to analyze queries --&
&str name="queryFieldType"&string&/str&
&str name="config-file"&elevate.xml&/str&
&/searchComponent&
此处用到了一个QueryElevationComponent,它需要一个配置文件elevate.xml,其内容如下:
&query text="foo bar"&
&doc id="1" /&
&doc id="2" /&
&doc id="3" /&
&query text="ipod"&
&doc id="MA147LL/A" /&
&!-- put the actual ipod at the top --&
&doc id="IW-02" exclude="true" /& &!-- exclude this cable --&
&/elevate&
我们从中可以看到有一项id的值为MA147LL/A。关于这个问题,我做了一系列的尝试,最后试着解释它一下:由于QueryElevationComponent启动是要求必须有一个uniqueKey,我此处定义的uniqueKey是int类型的。而我们看elevate.xml时发现它有两个string类型的id值。所以此处就报错了。修改这个问题的两个方式,一是把你的schema.xml中的uniqueKey的值设置为一个string类型的值,二是直接在solrconfig.xml中直接注释掉这一段的配置,两者我都试过,都能成功。这里我采用的是后者。注释掉了之后再重启tomcat,又报了一个错:undefined field text。这个问题我百度了一下,也没找到根源。但知道了原因是有一个步骤要使用一个名字叫text的field,但是我们没有,这里不妨定义一下,在schema.xml文件的&fields&中加上如下一句:
&field name="text" type="string" stored="false" indexed="false"/&
然后再重启下tomcat。没有报错了,好的,这说明配置过程已经可以了。下面就要建立索引了。访问如下的地址:http://localhost:8983/solr-example/admin/dataimport.jsp?handler=/dataimport,出现如下界面:点击页面左下方的full-import按钮,生成索引。具体变化我忘了,在运行完了之后看看tomcat的日志,发现《静夜思》被打出来了。
回到http://localhost:8983/solr-example/admin/之后什么都不要做,保持查询框中的内容是*:*,直接点击search,看到打出来如下的内容,你就开心吧,全量索引建立完成。
好了,在这个过程中,我有好多的问题都没找到最终的原因,之后还有添加中文分词,中文分词是干嘛的,增亮索引以及在项目中使用solr等一系列问题要解决。
希望你学习solr的时候这两篇文章可以帮助到你。小菜鸟要努力学习,欢迎大神批评指正。
不错的文章此回复是对菜鸟最大的鼓励,乃神回复
浏览: 4332 次
来自: 北京
&div class=&quote_title ...
不错的文章yjflinchong 的BLOG
用户名:yjflinchong
文章数:190
评论数:11
访问量:25173
注册日期:
阅读量:5863
阅读量:12276
阅读量:364962
阅读量:1060119
51CTO推荐博文
1.如果配置文件配置错误,是否提示。true要报错,false不报错。
&&abortOnConfigurationError&${solr.abortOnConfigurationError:true}&/abortOnConfigurationError&
2.solr版本。
&luceneMatchVersion&LUCENE_31&/luceneMatchVersion&
3. 索引文件目录,建索引的目录和查询的目录都是它。
&dataDir&${solr.data.dir:./solr/db/data}&/dataDir&
4.一些基础配置
& & 4.1多少个document进行合并&&
& &mergeFactor&10&/mergeFactor&
&&& &!-- Sets the amount of RAM that may be used by Lucene indexing
&&&&&&&& for buffering added documents and deletions before they are
&&&&&&&& flushed to the Directory.& --&
&& 4.2 缓存大小
&&& &ramBufferSizeMB&32&/ramBufferSizeMB&
多少个文档自动合并
&&mergeFactor&10&/mergeFactor&
设置域的最大长度
&maxFieldLength&10000&/maxFieldLength&
设置写锁的延迟时间
&&& &writeLockTimeout&1000&/writeLockTimeout&
设置提交锁的延迟
&&& &commitLockTimeout&10000&/commitLockTimeout&
&直接更新的方法:即调用solr默认的url访问。
&&updateHandler class=&solr.DirectUpdateHandler2&&
自动提交的最大文档数,最大时间
&&autoCommit&&
&&&&&&&& &maxDocs&10000&/maxDocs&
&&&&&&&& &maxTime&1000&/maxTime&&
&&&&&& &/autoCommit&
4.5包含所有查询的参数设置& &query&
设置lru缓存
&&& &filterCache class=&solr.FastLRUCache&
&&&&&&&&&&&&&&& size=&16384&
&& &&& &&& &&& &&& &&&&&& initialSize=&4096&
&& &&& &&& &&& &&& &&&&&& autowarmCount=&4096&/&
设置查询结果缓存
&&& &queryResultCache class=&solr.LRUCache&
&&&&&&&&&&&&&&&&&&&&& size=&16384&
&& &&& &&& &&& &&& &&& &&& &&& &&&&&& initialSize=&4096&
&& &&& &&& &&& &&& &&& &&& &&& &&&&&& autowarmCount=&1024&/&
设置文档缓存
&& & &documentCache class=&solr.LRUCache&
&&&&&&&&&&&&&&&&&& size=&16384&
&&&& &&& &&& &&& &&& &&& &&& & initialSize=&16384&/&
是否延迟加载索引域
&&enableLazyFieldLoading&true&/enableLazyFieldLoading&
设置查询的最大doc数
&queryResultMaxDocsCached&500&/queryResultMaxDocsCached&
这个参数暂时未用
&&& &maxWarmingSearchers&2&/maxWarmingSearchers&
假如用dataimport这solr自带的导入数据命令时,的参数,即与数据库对应的文件的位置
&&requestHandler name=&/dataimport& class=&org.apache.solr.handler.dataimport.DataImportHandler&& &
&&& &lst name=&defaults&& &
&&&&& &str name=&config&&C:\solr-tomcat\solr\db\conf\db-data-config.xml&/str& &
&&& &/lst& &
& &/requestHandler&&&
这个标签是用来控制主索引服务器,与从索引服务器分发索引快照的所有属性的
&&&& &requestHandler name=&/replication& class=&solr.ReplicationHandler& &
&&&&&& &lst name=&master&&
&&&&&&&& &str name=&replicateAfter&&commit&/str&
&&&&&&&& &str name=&replicateAfter&&startup&/str&
&&&&&&&& &str name=&confFiles&&schema.xml,stopwords.txt,elevate.xml&/str&
&&&&&&&& &str name=&commitReserveDuration&&00:00:60&/str&
&&&&&&&& &str name=&httpBasicAuthUser&&345&/str&
&&&&&&&& &str name=&httpBasicAuthPassword&&345&/str&
&&&&&& &/lst&
&&&& &/requestHandler&
这个标签和他的名字是一样的,表示用于集群的组件所有参数
& &searchComponent name=&clustering&&
&&&&&&&&&&&&&&&&&& enable=&${solr.clustering.enabled:false}&
&&&&&&&&&&&&&&&&&& class=&solr.clustering.ClusteringComponent& &
&&& &!-- Declare an engine --&
&&& &lst name=&engine&&
&&&&& &!-- The name, only one can be named &default& --&
&&&&& &str name=&name&&default&/str&
&&&&& &!-- Class name of Carrot2 clustering algorithm.&
&&&&&&&&& &
&&&&&&&&&& Currently available algorithms are:
&&&&&&&&& &
&&&&&&&&&& * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
&&&&&&&&&& * org.carrot2.clustering.stc.STCClusteringAlgorithm
&&&&&&&&& &
&&&&&&&&&& See http://project.carrot2.org/algorithms.html for the
&&&&&&&&&& algorithm's characteristics.
&&&&&&& --&
&&&&& &str name=&carrot.algorithm&&org.carrot2.clustering.lingo.LingoClusteringAlgorithm&/str&
&&&&& &!-- Overriding values for Carrot2 default algorithm attributes.
&&&&&&&&&& For a description of all available attributes, see:
&&&&&&&&&& http://download.carrot2.org/stable/manual/#ponents.
&&&&&&&&&& Use attribute key as name attribute of str elements
&&&&&&&&&& below. These can be further overridden for individual
&&&&&&&&&& requests by specifying attribute key as request parameter
&&&&&&&&&& name and attribute value as parameter value.
&&&&&&& --&
&&&&& &str name=&LingoClusteringAlgorithm.desiredClusterCountBase&&20&/str&
&&&&& &!-- The language to assume for the documents.
&&&&&&&&& &
&&&&&&&&&& For a list of allowed values, see:
&&&&&&&&&& http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
&&&&&& --&
&&&&& &str name=&MultilingualClustering.defaultLanguage&&ENGLISH&/str&
&&& &/lst&
&&& &lst name=&engine&&
&&&&& &str name=&name&&stc&/str&
&&&&& &str name=&carrot.algorithm&&org.carrot2.clustering.stc.STCClusteringAlgorithm&/str&
&&& &/lst&
& &/searchComponent&
当发生集群命令时,对应的相应参数。表示是否开启集群等。
&&requestHandler name=&/clustering&
&&&&&&&&&&&&&&&&& startup=&lazy&
&&&&&&&&&&&&&&&&& enable=&${solr.clustering.enabled:false}&
&&&&&&&&&&&&&&&&& class=&solr.SearchHandler&&
&&& &lst name=&defaults&&
&&&&& &bool name=&clustering&&true&/bool&
&&&&& &str name=&clustering.engine&&default&/str&
&&&&& &bool name=&clustering.results&&true&/bool&
&&&&& &!-- The title field --&
&&&&& &str name=&carrot.title&&name&/str&
&&&&& &str name=&carrot.url&&id&/str&
&&&&& &!-- The field to cluster on --&
&&&&&& &str name=&carrot.snippet&&features&/str&
&&&&&& &!-- produce summaries --&
&&&&&& &bool name=&carrot.produceSummary&&true&/bool&
&&&&&& &!-- the maximum number of labels per cluster --&
&&&&&& &!--&int name=&carrot.numDescriptions&&5&/int&--&
&&&&&& &!-- produce sub clusters --&
&&&&&& &bool name=&carrot.outputSubClusters&&false&/bool&
&&&&&& &str name=&defType&&edismax&/str&
&&&&&& &str name=&qf&&
&&&&&&&&& text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
&&&&&& &/str&
&&&&&& &str name=&q.alt&&*:*&/str&
&&&&&& &str name=&rows&&10&/str&
&&&&&& &str name=&fl&&*,score&/str&
&&& &/lst&&&& &
&&& &arr name=&last-components&&
&&&&& &str&clustering&/str&
&&& &/arr&
& &/requestHandler&
默认查询条件
&&& &defaultQuery&*:*&/defaultQuery&
&&& &!-- configure a healthcheck file for servers behind a
&&&&&&&& loadbalancer&
&&&&&& &healthcheck type=&file&&server-enabled&/healthcheck&
& &/admin&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:未分类┆阅读(0)┆评论(0)顾名思义,solrconfig.xml主要是配置跟自身相关的参数,比如:为建索引和搜索等请求配置Request Handler为某些事件配置listener,以触发执行某些代码为HTTP请求配置Request Dispatcher配置Admin Web为分布式的复制配置相关的参数这个位于每个collection的conf/中,在server/solr/configsets/目录下有一些例子可以参考。solrconfig.xml配置文件支持使用变量,格式如下:${propertyname[:option default value]}冒号后面的是缺省值,冒号前面的值可以来自于:JVM的-D参数,比如:bin/solr start -Dpropertyname=none.properties等配置文件,比如solrcore.properties、core.properties等文件&lib/&标签:用途:配置插件的jar包,比如指定中文分词器jar包的位置注意事项:被依赖的包配置在前面&requestHandler/&标签:用途:配置Solr处理各种请求(搜索/select、更新索引/、等)的各种参数主要参数:name:作为HTTP请求路径的一部分,比如:http://:8983/solr/gettingstarted/select?q=solrclass:处理请求的类initParams:可选。引用&initParams&标签中的配置&lst name=&defaults&&:定义各种缺省的配置,比如缺省的parser、缺省返回条数例子:&&requestHandler name=&/select& class=&solr.SearchHandler&&& & &lst name=&defaults&&&& & & &str name=&echoParams&&explicit&/str&& & & & & &str name=&defType&&edismax&/str&& & & &int name=&rows&&10&/int&& & &/lst&& &/requestHandler&几种常用的Request HandlerSearchHandlers:用于处理搜索请求UpdateRequestHandlers:用于更新索引DataImportHandlers:用于从导入数据例子:&requestHandler name=&/dataimport& class=&org.apache.solr.handler.dataimport.DataImportHandler&&& &lst name=&defaults&&& & &str name=&config&&data-config.xml&/str&& &/lst&&/requestHandler&&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的触发条件。如果没配置这个参数,则每次都必须手动commitmaxDocsmaxTime(毫秒)openSearcher:autoCommit结束后,是否开启一个新的searcher让更改生效。缺省为falseautoSoftCommit:定义自动softCommit的触发条件。相关参数同autoCommitlistener:配置事件监听器event:监听哪个事件,比如:event=&postCommit&,&event=&postOptimize&class:处理的类,可以是自己的实现类。如果是RunExecutableListener,可以配置下面的参数:exe:可,包括Solr Home的相对路径和文件名dir:工作目录,缺省是“.”wait: 调用者是否等待可执行文件执行结束,缺省是trueargs:传递给可执行文件的参数env:其他所需要的环境变量updateLog:配置log的保存路径、等dir:保存路径numRecordsToKeep:一个log保存的记录数,缺省为100maxNumLogsToKeep:log的数量,缺省为10numBuckets:追踪max version的bucket数量(?),缺省为65535配置这些参数要考虑到搜索的准确度和性能的平衡。^_^注:commit和softCommit:commit:正式提交、对索引的修改会被保存到永久中(比如磁盘),会比较耗时softCommit:软提交,对索引的修改会被立即应用到工作中的索引中,即立即生效,但没有保存进磁盘&query/&标签:用途:配置Solr如何处理和返回搜索的相关参数主要参数:filterCache:当搜索带有“fq”参数时,使用这个配置,它保存未经过排序的所有文档class:实现类,有三种:solr.search.LRUCache, solr.search.FastLRUCache,&solr.search.LFUCachesize:最大保存的记录数量initialSize:初始数量autowarmCount:新Index Searcher启动的时候从旧的Index Searcher缓存拷贝过来的数据量queryResultCache:存储最终的搜索结果(排序后的、有范围的文档id)class:实现类,有三种:solr.search.LRUCache, solr.search.FastLRUCache,&solr.search.LFUCachesize:最大保存的记录数量initialSize:初始数量autowarmCount:新Index Searcher启动的时候从旧的Index Searcher缓存拷贝过来的数据量maxRamMB:最大分配的容量(兆)documentCache:缓存Lucene Document对象(就是每个文档的fields)class:实现类,有三种:solr.search.LRUCache, solr.search.FastLRUCache,&solr.search.LFUCachesize:最大保存的记录数量initialSize:初始数量autowarmCount:因为Lucene的内部文档 id 是临时的,所以这个缓存不应该被auto-warm,这个值应该为“0”cache:配置自定义的缓存,通过SolrIndexSearcher类的getCache()方法和name参数调用这个缓存name:被调用时的标识其他参数同上maxBooleanClauses:BooleanQuery的最大子句数量enableLazyFieldLoading:没有知道被请求的field是否懒加载,true/falseuseFilterForSortedQuery:如果不是按照score排序,是否从filterCache中获取数据queryResultize:配合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&就是需要处理的是querylst, name:针对哪些搜索条件需要处理&requestDispatcher/&标签:用途:控制Solr HTTP RequestDispatche r响应请求的方式,比如:是否处理/select url、是否支持对流的处理、上传文件的大小、如何处理带有cache头的HTTP请求、等等主要参数:handleSelect:true/false,如果是false,则由requestHandler来处理/select请求。因为现在的requestHandler中/select是标配,所以这里应该填falserequestParsers:enableRemoteStreaming:是否接受流格式的内容,缺省为turemultipartUploadLimitInKB: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,多个的话用逗号“,”分开相关名词:Solr缓存:跟整个Index Searcher的生命周期对应,没有超时被清理掉的机制,只会在容量满了的时候被清理Index Searcher:负责处理搜索。当一个新的searcher启动的时候会从当前searcher拷贝缓存数据(warming),当前searcher的结束条件:它正在处理的request已经完成、缓存拷贝已经完成LRU缓存:清理缓存的时候,优先清理掉最近不用的那些数据(Least Recently Used)LFU缓存:清理缓存的时候,优先清理掉使用次数最少的那些数据(Least Frequently Used)
版权声明:本文为原创,转载请注明转自Clement-Xu的csdn。}

我要回帖

更多关于 solrconfig.xml 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信