检查索引: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不建立索引。