当前所在位置: 首页 > 数码科技 > 正文

solr最实用入门使用手册(solr的使用)

2023-06-05 本站作者 【 字体:

1.什么是Solr

Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。
高级的全文搜索功能 专为高通量的网络流量进行的优化 基于开放接口(XML和HTTP)的标准 综合的HTML管理界面 可伸缩性-能够有效地复制到另外一个Solr搜索服务器 使用XML配置达到灵活性和适配性 可扩展的插件体系


2.定义Scheme

2.1常用类型


name,这里定的的name将在field字段中用于type参数 sortMissingLast,若为true则当document不包含该字段是排序靠后 onitNorms,若为true则意味着索引阶段禁用了文档boost和域的boost及长度标准化。(即域没有特殊打分区别。) precisionStep,精度值 solr.TextField,该类型的域将使用QueryParser搜索,支持分词,可自定义分词器


2.2 定义Field

<fields>    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>    <field name="path" type="text_smartcn" indexed="false" stored="true" multiValued="false" termVector="true" />    <dynamicField name="public_rand*" type="random" indexed="true" stored="false"/></fields><uniqueKey>id</uniqueKey><copyField source="content" dest="pinyin"/>

field: 固定的字段设置 dynamicField: 动态的字段设置,用于后期自定义字段,*号通配符. copyField ,一般用于检索时用的字段这样就只对这一个字段进行索引 uniqueKey,主键 indexed,缺省true。 说明这个数据应被搜索和排序 stored,缺省true。说明这个字段将被包含在搜索结果中。 multiValued,字段多于一个值的时候,可设置为true。


3.查询语句

3.1 最通用的查询

案例:q=60eb1384-038e-42f6-8350-0b77c2025837&fq=customerId:95955047-a739-4d4a-9ca0-af8e5d75bcbc&start=0&rows=1&fl=id,customerId,score&df=id

q:查询参数字段,必填。多个q&时,仅第一个有效。支持AND/OR/-(NOT)布尔关系运算。 field和value用”:”分割。 范围查询:[* TO *] ,时间和字符串亦可使用 时间:NOW 现在,NOW-1DAY 昨天这个时间点。NOW/DAY四舍五入到天 (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND) fq:过滤结果集参数,可结合filterCache使用,语法与q一致。多个fq&是AND关系。 start,rows:起始及页容量,分页相关 fl:定义返回field,*其中定义score,可返回文档索引得分;*亦可以返回函数结果值 df,q中默认查询字段,如果不设置,需显式标注field。



3.2 高亮查询

案例:&hl=true&hl.fl=id,customerId&hl.simple.pre=<em>&hl.simple.post=</em>

hl:true,设置使用高亮 hl.fl:定义高亮的字段,字段若不出现在q中,则返回不会加高亮处理 hl.simple.pre/post:高亮处理



3.3 group查询

案例:&fl=id,customerId&group=true&group.field=id

group:true,设置使用分组 group.field:设置分组字段,必填,多个字段用&分割,会返回多个结果集 group.limit:分页容量 group.offset:分页起始 group.query:将单独返回经过query筛选的结果集 group.ngourps:返回结果数



3.4 facet查询

案例:&facet=true&facet.query=60eb1384-038e-42f6-8350-0b77c2025837&facet.field=id&facet.field=customerId&facet.prefix=0

facet:true,设置facet查询 facet.query:facet查询数据结果集,不设置则facet.querys为空。设置了df则不用显式field facet.field:返回按字段分别的结果集,多个用&分割,如果不设置则facet.fields返回空。 facet.prefix:查询前缀,限制返回“0”开头的结果 facet.offset=0 : 表示在当前排序情况下的偏移,可以做分页 facet.limit=100 : 返回的数目 facet.missing=false : 是否返回没有值的field



4 排序语句

案例:

sum(    recip(if(exists(callCount),callCount,0),1,1,1),//未拨号的优先,优于时间一个数量级    product(map(if(exists(failCallCount),failCallCount,0),0,3,0),-1000),//存在无效用户    div(ms(NOW,lastCallDateTime),3.16e12),    div(ms(NOW,createTime),3.16e12))

简单排序可以使用sort,但涉及到复杂业务排序的,建议使用bf函数计算得分排序。
*排序是通过查询筛选后,对结果进行的展示序列调整,所以用于排序的字段显然是可进行计算和比较的。
sum(x,y,...):累加/sub(x,y):x-y/ product(x,y,...):累乘/div(x,y):x除以y,”x/y”/mod(x,y)取模,“x%y” pow(x,y):次方/sqrt(x),开方 map(x,min,max,target):如果min<=x<=max,则输出target,否则输出x scale(x,minTarget,maxTarget):将x压缩到值域之内。 max(x,y):取两数之大/min(x,y):取两数之小 linear(x,m,c):线性函数,m*x+c recip(x,m,a,b):压缩函数,a/(m*x+b),若x>0,将x压缩在(0,a/b]之间。m为压缩比例。一般a和b设置成一样。这样x就在(0,1]之间 ms(x,y) 计算x时间点-y时间点的long值

5 缓存设置

5.1 缓存类型

documentCache 文档缓存 filterCache fq查询缓存 queryResultCache 相同查询条件结果缓存 fieldValueCache



5.2 documentCache

如果ducoment曾经被查询过,则会缓存,查该document上任意field都会优先击中缓存。


5.3 filterCache

相同的fq语句结果将会被缓存,并与q查询返回的结果做结果交集返回。注意:只要fq的语句是一样的,则使用同一份缓存。


5.4 queryResultCache

相同的查询语句结果将会被缓存,以后相同的语句再次使用将使用缓存数据。


5.5 fieldValueCache

f acet.field是multivalue时,将进行缓存。


5.6 缓存失效

solr的缓存生命周期是由org.apache.solr.search.SolrIndexSearcher管理的,索引产生任何变更,solr默认将new出新的solrIndexSearcher对象,也即所有缓存会直接失效。

因此在设计solr core中的缓存时,要将经常变更的字段或数据单独剥离成core或者不要在经常变动的数据上设置缓存,否则反倒会增加性能消耗。


阅读全文
相关推荐

广西贺州旅游攻略必去景点 广西贺州十大旅游景点

广西贺州旅游攻略必去景点 广西贺州十大旅游景点
1、黄姚古镇:黄姚是有着近千年历史的古镇,它发祥于宋朝年间,由于镇上以黄、姚两姓居多,故名“黄姚”。和很多江南小镇一样,有小桥、流水、人家,有精雕细刻的檐梁壁画,有屋檐上诗文画壁的古宅民居。如果是夏天来这里,不妨去农趣园,是赏荷的好地方,园内还有复原的豆豉、豆腐、榨油古作坊。

夫妻入职300家公司骗工资60万 骗子靠实习工资就月入数十万

夫妻入职300家公司骗工资60万 骗子靠实习工资就月入数十万
一张离职证明牵出涉及数百人的“职业骗薪”团伙,其中一对夫妇2年入职300多家公司,两人仅月工资收入就超过60万元。想知道夫妻入职300家公司骗工资60万是怎么回事,骗子靠实习工资就月入数十万是什么情况,请看以下介绍。  夫妻入职300家公司骗工资60万  据消息,沈总是一家金融公司的老板,今年,

华南理工已组织调查小组核查 顾姓老师已调离华南理工

华南理工已组织调查小组核查 顾姓老师已调离华南理工
近日,华南理工大学一名博士毕业生的答辩视频引发网络争议。随后,相关话题引发大量关注。那么,华南理工已组织调查小组核查是怎么回事?顾姓老师已调离华南理工是什么情况?想知道请看以下介绍。  顾姓老师已调离华南理工  6月2日,四川大学、华南理工大学相继发布情况说明:  四川大学  日前,网络上出现关

房东给出租房装5级能耗空调 空调电费比房租贵

房东给出租房装5级能耗空调 空调电费比房租贵
房东给出租房装5级能耗空调,空调电费比房租贵,这是怎么回事呢?近日,浙江一网友发视频吐槽,房东给她安装了一台5级节能级别的新空调,使她不敢开空调睡觉。女子租这间公寓时,房东保证了冬暖夏凉,但实际上,这台空调非常耗电,每小时1.5度以上,每月电费将达六七百。  房东给出租房装5级能耗空调  近日,

重庆暴雨倒灌车库 居民用绳子将车主救出

重庆暴雨倒灌车库 居民用绳子将车主救出
据报道,重庆江津区双福街道受降雨影响出现内涝,辖区内一小区地下车库倒灌进水,一汽车在出口被困,居民用绳子将车主救出。  事发小区物业工作人员称,该车主本想开车驶离地下车库,结果因为路面积水大量涌入,导致车辆被困,周围居民用绳将其拉起逃生,现场画面非常惊险。  根据官方消息,6月1日我国南方地区进

5月百强房企销售规模继续下滑 环比降低14.3%

5月百强房企销售规模继续下滑 环比降低14.3%
6月1日,第三方研究机构克而瑞发布5月百强房企的销售数据,根据数据显示,百强房企实现销售操盘金额4853.6亿元,环比降低14.3%。不过,在2022年的低基数效应下,百强房企单月同比仍增长6.7%,但增幅显著低于此前的水平。累计前5个月的业绩来看,百强房企的操盘金额同比保持增长,增幅为9.1%

男子开咖啡店为什么日入0元 男子拿15万积蓄赴杭州开咖啡店日入0元

男子开咖啡店为什么日入0元 男子拿15万积蓄赴杭州开咖啡店日入0元
最近,一位上海的陈先生,在杭州开了一家白天营业的咖啡店。然而,开业当天和前几天下雨,让他的营业额都是0元。那么,男子开咖啡店为什么日入0元呢?到底男子开咖啡店日入0元是怎么一回事?下面一起来看看。  近日,浙江杭州,上海的陈先生拿出15万元积蓄,跑到杭州开了家咖啡店,开业当天和前几天下雨天,营业

女孩放弃入职后收到HR千字回复是为何 女孩放弃入职后为什么会收到HR千字回复

女孩放弃入职后收到HR千字回复是为何 女孩放弃入职后为什么会收到HR千字回复
近日,有女生分享了自己入职的经验,整个经历很是梦幻。 据悉,这位女生放弃入职邮件后,对方公司HR回复三千余字长文。具体女孩放弃入职后收到HR千字回复是为何?到底女孩放弃入职后为什么会收到HR千字回复?一起来了解。女孩放弃入职后收到HR千字回复是为何近日,有女生分享了自己入职的经验,整个经历很是梦幻。

​西游记主题公园游客吵架牛魔王劝架是怎么回事 西游记主题公园游客吵架牛魔王劝架具体情况

​西游记主题公园游客吵架牛魔王劝架是怎么回事 西游记主题公园游客吵架牛魔王劝架具体情况
近日,两位游客在吉林长春西游记主题公园的南天门景点外起争执,扮演牛魔王的工作人员上前劝架,引发关注。具体西游记主题公园游客吵架牛魔王劝架是怎么回事?一起来了解西游记主题公园游客吵架牛魔王劝架具体情况。西游记主题公园游客吵架牛魔王劝架是怎么回事6月1日,吉林长春,网友爆料称长春动植物园“梦幻西游季”活

学生网购小石头收到7斤巨石是什么情况 学生网购小石头为什么收到7斤巨石

学生网购小石头收到7斤巨石是什么情况 学生网购小石头为什么收到7斤巨石
近日,江苏徐州。一学生网购巴掌块小石头作画商家发来一块7斤重大石头。具体学生网购小石头收到7斤巨石是什么情况?到底学生网购小石头为什么收到7斤巨石?一起来了解。学生网购小石头收到7斤巨石是什么情况5月31日,江苏徐州。学生网购巴掌块小石头作画商家发来一块7斤重大石头。当事人徐同学介绍,自己的专业需要
本文Tag