1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
//可以配置日志、监控、策略、缓存机制等等 //Spellcheck 动态实现下拉效果 /elevate 排序规则 /* //jar包的路径,根据实际路径配置 不需要的可以删了 <lib dir="D:/solr-4.9.1/contrib/extraction/lib" regex=".*\.jar" /> <lib dir="D:/solr-4.9.1/dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="D:/solr-4.9.1/contrib/clustering/lib/" regex=".*\.jar" /> <lib dir="D:/solr-4.9.1/dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="D:/solr-4.9.1/contrib/langid/lib/" regex=".*\.jar" /> <lib dir="D:/solr-4.9.1/dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="D:/solr-4.9.1/contrib/velocity/lib" regex=".*\.jar" /> <lib dir="D:/solr-4.9.1/dist/" regex="solr-velocity-\d.*\.jar" /> */ //默认solr.NRTCachingDirectoryFactory 在linux环境下如果不需要近实时搜索功能,可能solr.MMapDirectoryFactory性能更好 <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"> //限制token最大长度 <filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/> //IndexWriter等待解锁的最长时间(毫秒) <writeLockTimeout>1000</writeLockTimeout> //根据硬件情况设置线程数 <maxIndexingThreads>8</maxIndexingThreads> //solr默认为false。如果为true,索引文件减少,检索性能降低,追求平衡 <useCompoundFile>false</useCompoundFile> //默认缓存文档大小 <ramBufferSizeMB>100</ramBufferSizeMB> //默认缓存文档数量 <maxBufferedDocs>1000</maxBufferedDocs> //合并策略 <mergePolicy class="org.apache.lucene.index.TieredMergePolicy"> <int name="maxMergeAtOnce">10</int> <int name="segmentsPerTier">10</int> </mergePolicy> //合并因子,每次合并多少个segments <mergeFactor>10</mergeFactor> //合并调度器 <mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/> //锁工厂 //single:适用于只读的索引库,即索引库是定死的,不会再更改 //native:使用本地操作系统的文件锁方式,不能用于多个solr服务共用同一个索引库。Solr3.6 及后期版本使用的默认锁机制 //simple:使用简单的文件锁机制 <lockType>${solr.lock.type:native}</lockType> //是否启动时先解锁 <unlockOnStartup>false</unlockOnStartup> //Lucene loads terms into memory 间隔 <termIndexInterval>128</termIndexInterval> //重新打开,替代先关闭-再打开 <reopenReaders>true</reopenReaders> //提交删除策略,必须实现org.apache.lucene.index.IndexDeletionPolicy <deletionPolicy class="solr.SolrDeletionPolicy"> //相当于把创建索引时的日志输出 <infoStream file="INFOSTREAM.txt">false</infoStream> //设置索引库更新日志,默认路径为solr home下面的data/tlog。随着索引库的频繁更新,tlog文件会越来越大, //所以建议提交索引时采用硬提交方式<autoCommit>,即批量提交。 <updateLog> <str name="dir">${solr.ulog.dir:}</str> </updateLog> //自动硬提交方式 maxTime:设置多长时间提交一次maxDocs:设置达到多少文档提交一次openSearcher:文档提交后是否开启新的searcher, //如果false,文档只是提交到index索引库,搜索结果中搜不到此次提交的文档;如果true,既提交到index索引库,也能在搜索结果中搜到此次提交的内容。 //autoCommit 硬提交 关注持久化 autoSoftCommit 软提交 关注实时性 <autoCommit> <maxTime>15000</maxTime> <maxDocs>10000</maxDocs> <openSearcher>false</openSearcher> </autoCommit> //<query> //设置boolean 查询中,最大条件数。在范围搜索或者前缀搜索时,会产生大量的 boolean 条件, //如果条件数达到这个数值时,将抛出异常,限制这个条件数,可以防止条件过多查询等待时间过长。 //maxBooleanClauses 下面还有缓存配置 <maxBooleanClauses>1024</maxBooleanClauses> //最大缓存文档数 <queryResultWindowSize>20</queryResultWindowSize> //以下 等等等等 的 默认配置都在solrconfig.xml中配置 <requestHandler name="/select" class="solr.SearchHandler"> <requestHandler name="/query" class="solr.SearchHandler"> <requestHandler name="/get" class="solr.RealTimeGetHandler"> <requestHandler name="/browse" class="solr.SearchHandler"> <requestHandler name="/update" class="solr.UpdateRequestHandler"> <requestHandler name="/update/json" class="solr.UpdateRequestHandler"> <requestHandler name="/update/csv" class="solr.UpdateRequestHandler"> <requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler"> <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> /* 权重相关配置 举一个例子,电商类网站(比如淘宝)的商品搜索: 在商品名称上出现搜索关键字排序靠前,而内容的次之 对近期发布的商品排序靠前,对多皇冠的买家排序靠前等,对最近销售多商品靠前 综上获得一个综合排名 defType权重类型 bf用函数计算某个字段的权重,如上例子中pub_date发布日期的权重,point比如诚信指数,sale_count销售数量 bf内字段必须是索引的 pf查询字段,这样在schema不用制定默认字段 qf对默认查询增加权重比值,比如标题是content的1.9倍,值越大权重越大 这样查询就会计算如下的一个综合评分值了 对于其他排序,比如说价格排序,在schema增加price字段,然后查询是增加sort=price desc就可以了 在SearchHandler中如下配置 */ <str name="defType">edismax</str> <str name="bf"> sum(recip(ms(NOW,pub_date),1,1,100),div(point,5632000),div(sale_count,1000000)) </str> <str name="pf"> content </str> <str name="qf"> name^1.9 </str> |