Solr学习总结-问题处理

本文详细介绍了如何优化Solr索引,包括检查、修复、合并索引,设置内存参数,处理非英语字典排序,解决分片查询递归问题,调整垃圾收集策略,以及更新索引文件的方法。此外,还阐述了使用外部字段和索引优化策略来提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值