Solr问题处理(总结版)

来源:互联网 发布:笔记记录软件 编辑:程序博客网 时间:2024/06/07 13:06

检查索引: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

[java] view plaincopy
  1. <fieldType name="floatOld" class="solr.FloatField" omitNorms="true"/>  
  2. <fieldType name="visitsFieldType" keyField="id" defVal="0"  
  3. stored="false" indexed="false" class="solr.ExternalFileField"  
  4. valType="floatOld" />  
  5. <field name="visits" type="visitsFieldType" />  
新建external_visits文件,内容为:
[plain] view plaincopy
  1. 1=200  
  2. 2=20  
  3. 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不建立索引。

0 0