检查索引:java -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex  /usr/share/solr/data/index

修复索引:java –cp /solr/lucene/lucene-core-3.1-SNAPSHOT.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex /usr/share/solr/data/index -fix

合并索引:curl 'http://localhost:8983/solr/update' --data-binary '<optimize/>' -H 'Content-type:text/xml; charset=utf-8'

避免打开过多的索引文件:<mergeFactor>2</mergeFactor><useCompoundFile>true</useCompoundFile>

内存不够用:java –Xmx1024M –Xms512m –jar start.jar。分别指定jvm可以获得的最大和最小的堆数量。

非英语的字典排序可以采用过滤:<filter class="solr.CollationKeyFilterFactory" language="pl" country="PL" strength="primary" />

分片查询的无穷递归问题:主要是在requestHandler中重复定义对本地的查询,可以新建分片查询,分片调用本地。

jvm垃圾收集过慢问题:java –Xms256M –Xmx2048 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC-XX:ParallelGCThreads=4 -XX:SurvivorRatio=2 –jar start.jar

监视垃圾回收:java –Xms256M –Xmx2048 –Xloggc:gc.log –jar start.jar

更新一个field而不是重建全部索引:定义外部field


<fieldType name="floatOld" class="solr.FloatField" omitNorms="true"/>  
<fieldType name="visitsFieldType" keyField="id" defVal="0"  
stored="false" indexed="false" class="solr.ExternalFileField"  
valType="floatOld" />  
<field name="visits" type="visitsFieldType" />


新建external_ visits 文件,内容为:

1=200  
2=20  
3=50


其中 visits 标识新的域名。=左边是keyField,右边是值。

外部的field只能用在函数查询中,不能用来查找、排序和显示;只有重新提交后或者重启,更改的external_visits文件才可以起作用。

http://localhost:8080/solr/select?q=_query_:"{!dismax qf=title v='content'}"&bf=log(visits)&fl=*,score&bf=product(visits)

索引优化:对于不显示的field不需要保存和termVectors等,对于不需要检索的field不建立索引。