文档章节

solr使用规范

andersChow
 andersChow
发布于 2018/10/23 21:31
字数 669
阅读 41
收藏 0

0. 目的

规范solr设计、用法,避免bug,提高性能

1. 设计规范

  • solr的用途是查询,不是存储,建议查询结果尽量都为id主键,而后再拿该id主键到缓存或者db中再查询相关信息,例如:请勿将经销商名称、车型名称等各类非Id信息放到solr。
  • 索引字段只用来查询等价于sql中的where/group/join等字段,所以index都得为true,不需要展示的字段可以将store设置为false,以减小io及存储。

2. 开发规范

2.1 原则禁止模糊查询

优先考虑通过分词查询(线上solr默认支持ik分词)来满足需求。如果使用模糊查询,务必避免使用多个*,超过1个请通知我们,或许有更好的方案,并防止意外风险。原因为:过多的*会严重降低solr查询性能,由于lucene本身的问题,曾经导致线上solr实例内存溢出。

2.2 设置真实的rows或group.limit值

rows值建议根据实际情况设置,例如:查询结果最多100条,rows没必要设置为1000,禁止使用int.maxvalue之类的设置,建议业务方根据自己的业务场景,估计是最大值;当rows>2000,请做好压力测试,并通知我们。
group.limit同理。
原因: 同禁止模糊查询

2.3 页码过大时,请慎重

分页值如果比较大,例如1000万条数据,每页10条,随着pageIndex值的增大,solr查询性能会逐步降低,如果pageIndex非常大,例如超过1万,性能会比较慢。可以和产品商量,1)大于某个阀值的时候,考虑设置为一个随机数;2)设置最大的页码,例如:1000页,防止抓包工具恶意扫描。

2.4 确保HttpSolrClient/HttpSolrServer单例

源码:

      params.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 128);
      params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 32);
      params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, followRedirects);

通过上述代码表明一个HttpSolrClient/HttpSolrServer占用多个tcp连接,如果不是单例,则连接数会倍增,线上虚拟机出现过占用链接过多导致资源不够用的OOM。

2.5 solr 随机排序

solr支持,用法如下:

# schema配置
<dynamicField name="rand*" type="random" indexed="true" stored="false"/>
# solrj查询语法
query.addSort("rand_"+randomNum, ORDER.desc);//随机排序

© 著作权归作者所有

共有 人打赏支持
andersChow
粉丝 2
博文 26
码字总数 16807
作品 0
程序员
私信 提问
JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

1. 学习计划 1、solr集群搭建 2、使用solrj管理solr集群 3、把搜索功能切换到集群版 4、添加商品同步索引库。 a) Activemq b) 发送消息 c) 接收消息 2. 什么是SolrCloud SolrCloud(solr 云)...

kent鹏
2018/07/28
0
0
Solr开发文档

Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。在这篇文章中,将介绍 Solr 并展示如何轻松地将其表现优异的全文本搜索功能加入到 We...

ibm_hoojo
2011/10/21
0
0
中小型研发团队架构实践:搜索服务器Solr

一、Solr 是什么 Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。 Apache Lucene 是一个高效的、基于 Java 的全文检索库。 二、为什么...

张辉清
2017/12/18
0
0
一年走向【Java架构师】之葵花宝典

大多数时候,不是我们不努力,而是不知从何下手,我深知一份好的学习资料是多么的重要,我们通常会把大量的时间都浪费在找资源上,本人搜集学习java架构师的经典学习路线如下可供参考!!! 一...

我一路狂奔
2017/05/20
395
1
Solr4.0的tomcat部署及Solrj的简单使用

Solr简介 Solr是一个非常流行的,高性能的开源企业级搜索引擎平台,属于Apache Lucene项目。主要功能包括强大的全文检索、结果高亮、切面检索、动态聚类、数据库整合、富文本(例如Word,PDF...

beibugulf
2016/09/30
7
0

没有更多内容

加载失败,请刷新页面

加载更多

mongodb副本集部署

常识: replset + shard replset是副本集,shard是分片 mongoDB的主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有...

谢思华
4分钟前
0
0
知名协作工具 Slack 换新 logo 啦!

简评:本文系译文。Slack 在自家 Blog 上解释了新的设计 —— 旧版的 logo 有 11 种颜色,在非白色背景的情况下,logo 不仅难看,而且很容易在多个地方上表现不一致。 新年换新装,Slack 已经...

极光推送
5分钟前
0
0
java程序向mysql插入中文变问号

我碰到的问题是使用客户端工具插入中文是没问题的,但是用java程序就变成问号了。 遇到这种问题肯定是字符集造成的,先检查数据库,表的字符集,都是utf8,然后看页面,程序等等等等都是utf...

hengbao5
7分钟前
1
0
边缘计算的爆发为安防全产业带来了怎样的变化?

随着物联网的快速发展以及数据处理 2.0 时代的来临,边缘计算很快成为了广受追捧的热门技术。IDC 数据显示,未来超过 50% 的数据需要在网络边缘侧分析、处理和存储,边缘计算市场规模将超万亿...

七牛云
11分钟前
0
0
中小企业如何借力工业互联网抵抗死亡潮?

对于不同的企业来说,跨步进入工业互联网的核心问题并不是“怎么做”,而是“能做什么”、以及“能不能做”。 尤其是在政策大力推动企业“上云上平台”的过程中,企业投入人力和成本,那么“...

阿里云云栖社区
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部