Solr的使用 — 检索

Solr的使用 — 检索,第1张

本文是延续 Solr的使用 系列,前一篇文章已经讲了 Solr 的部署和数据推送,这里主要以示例方式讲述 Solr 的常见查询语法,同时介绍如何使用 PHP 语言的客户端 solarium 同 Solr 集群进行数据交互。

想要详细地了解 Solr 查询语法,可参考 官方wiki 。

用于示例的数据,我已经推送到了 Solr , 见这里 。数据 Core 为 rooms,数据格式形如:

通过向 Solr 集群 GET 请求 /solr/core-name/select?query 形式的查询 API 完成查询,其中 core-name 为查询的 Core 名称。查询语句 query 由以下基本元素项组成,按使用频率先后排序:

wt 设置结果集格式,支持 json、xml、csv、php、ruby、pthyon,序列化的结果集,常使用 json 格式。

fl 指定返回的字段,多指使用“空格”和“,”号分割,但只支持设置了 stored=true 的字段。 * 表示返回全部字段,一般情况不需要返回文档的全部字段。

字段别名 :使用 displayName:fieldName 形式指定字段的别名,例如:

函数 :fl 还支持使用 Solr 内置函数 ,例如根据单价算总价:

fq 过滤查询条件,可充分利用 cache,所以可以利用 fq 提高检索性能。

sort 指定结果集的排序规则,格式为 <fieldName>+<sort>,支持 asc 和 desc 两种排序规则。例如按照价格倒序排列:

也可以多字段排序,价格和面积排序:

查询字符串 q 由以下元素项组成,字段条件形如 fieldName:value 格式:

以上元素项的默认值由 solrconfig.xml 配置文件定义。通常查询时设置 q=*:* ,然后通过 fq 过滤条件来完成查询,通过缓存提高查询性能。

Solr 的模糊查询使用占位符来描述查询规则,如下:

查询小区名称中包含“嘉”的房源信息

Solr 的模糊查询为:

单精确值查询是最简单的查询,类似于 SQL 中 = *** 作符。查询小区 id 为 1111027377528 的房源信息:

Solr 中查询为:

多精确值查询是单精确值查询的扩展,格式为 (value1 value2 ...) ,功能类似于 SQL 的 IN *** 作符。查询小区 id 为 1111027377528 或者 1111047349969 的房源信息:

Solr 中查询为:

范围查询是查询指定范围的值(数字和时间),格式为 [value1 TO value2] ,类似于 SQL 的 BETWEEN *** 作符。查询价格在 [2000, 3000] 的房源信息:

Solr 中范围查询为:

几个特殊的范围查询:

将基本查询结合布尔查询,就可以实现大部分复杂的检索场景。布尔查询支持以下几种布尔 *** 作:

查询北京市价格区间在 [2000, 3000] 或者上海市价格区间在 [1500, 2000] 的房源信息:

转换为逻辑与布尔查询:

在实际中分组查询比较常见,当然 Solr 也支持分组查询。分组查询语句由以下基本元素项组成(常用部分):

查询西二旗内价格最便宜小区的房源信息:

Group 分组查询为:

结果为:

在大多数情况下,Group 分组已经能满足我们的需求,但是如果待分组字段为多值,Group 分组已经无能为力了,这时使用 Facet 就能轻松解决。

Solr 的 Facet 语句由以下基本元素构成(常用):

例如,统计每个商圈的房源分布情况并倒序排列,由于 bizcircleCode 字段为多值,Facet 查询为:

结果如下:

Solr 的 geofilt 过滤器可以实现 LBS 检索,但要在 schema.xml 配置中将需检索字段的字段类型设置为 solr.LatLonType 类型。geofilt 过滤器参数列表如下:

示例中的 location 字段,值为 “40.074203,116.315445”,类型配置为:

则检索坐标点 40.074203,116.315445 附近 2 公里的房源信息:

Solr 提供一些函数以实现逻辑或数学运算。其中常用 数学运算 函数列表如下:

常用的 逻辑运算 函数:

这些函数可以使用在返回值或者查询条件上。例如返回每个房源的每平方米价格信息:

PHP 可以使用 solarium 客户端,实现 Solr 数据源的检索,详细使用说明 见这里 。

solarium 客户端需要配置 Solr 的基本信息。如下:

solarium 提供的查询方法较丰富,整理后如下表所示:

查询北京市的所有房源信息,如下:

solarium 提供的分组查询方法如下表所示(常用):

获取西二旗每个小区的房源分布信息,如下:

solarium 提供的 Facet 查询方法,如下表(常用):

获取北京市每个商圈的房源分布信息,如下:

到这里,Solr 系列就整理完毕了,未涉及的部分后续接触时再补充。这两天利用休息时间充电,自己在 Solr 方面的技能也算是上了一个台阶了。

统计抽样是指根据概率理论,从全体调查对象中随机抽取一部分样本单位据以观察,取得样本单位数据而据以推断总体的一种调查方法,非统计抽样是普查、重点调查、典型调查.

非统计抽样是指按照职业判断进行样本设计和实施抽样的技术。非统计抽样的特点:不能对抽样风险进行控制和量化。

对于统计抽样,必须做到2点,

一是随机抽样(总体中各个个体在被抽取时不但都有机会被选中,而且机会均等),

二是对于检查的结果需要用概率论的评价(就是以一个确定的百分比,比如是90%认定总体的某个指标在什么范围之内),包括计量抽样风险(结果中已包括了风险因素,而且知道这个结果中哪部分是对抽样风险的考虑)。

符合上了述条件的才是统计抽样,否则就是非统计抽样。

对于二者记住一个最重要的区别即可,非统计抽样无法量化风险,统计抽样可以量化风险。

非统计抽样更多会用到注册会计师的个人判断,定性分析。

统计抽样更多的是定量的分析。

相关阅读:

数据库插入大量数据时不要忘记先删除索引(小技巧)

solr入门之权重排序方法初探之使用edismax改变权重

sql server查看表占用索引空间(小技巧)

sql server不要插入大数据,开销太大

MongoDB——更新 *** 作(Update)c#实现

solr中facet及facet.pivot理解

Solr --- Group查询与Facet区别

Solr中的group与facet的区别

solr之模糊搜索(Fuzzy matching)

solr之~模糊查询

原文地址:https://www.cnblogs.com/RogerLu/p/13091721.html

最新文章

黄聪:免费C#反编译软件工具。Reflector已经out了,试试ILSpy吧

黄聪:如何使用Add-on SDK开发一个自己的火狐扩展

黄聪:使用Add-on SDK开发火狐扩展

利用python实现汉字转拼音

python 人脸识别

python 文字转语音

arcgis python 获得硬件id

python ocr图片中汉字识别

python 播放MP3和MP4

pycharm 当有多个.py文件在开发环境中时,如何 *** 作可以保证运行当前面对自己的文件?

热门文章

python word转pdf

python创建缩略图和选择轮廓效果

python 图片格式转换png转jpg,如何利用python给图片添加半透明水印

java环境变量的配置

solr的multivalued使用说明

solr联合多个字段进行检索(multivalued和copyfield的使用)

solr的基本概念

Solr学习之二-Solr基础知识

电商总结(八)如何打造一个小而精的电商网站架构

RabbitMQ原理与相关 *** 作(一)

Copyright © 2011-2022 走看看

可以试试:

使用SolrQuery对象,

SolrQuery solrQuery = new SolrQuery()

//组装查询条件

solrQuery.setQuery("*:*")

String key = "java3"

solrQuery.addFilterQuery("content:" + "*"+key+"*" )试试吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9573384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存