Solr之精确、匹配、排序、模糊查询-yellowcong
Solr查询数据,其实下面一堆的参数,我也没有做测试,只是转载过来了,我大概只用了高亮、排序、查询、分页,其他的好像没有用过,以后用再来查
一.基本查询
| 参数 | 意义 |
|---|---|
| q | 查询的关键字,此参数最为重要,例如,q=id:1,默认为q=:, |
| fl | 指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id,title,sort |
| start | 返回结果的第几条记录开始,一般分页用,默认0开始 |
| rows | 指定返回结果最多有多少条记录,默认值为 10,配合start实现分页 |
| sort | 排序方式,例如id desc 表示按照 “id” 降序 |
| wt | (writer type)指定输出格式,有 xml, json, php等 |
| fq | (filter query)过虑查询,提供一个可选的筛选器查询。返回在q查询符合结果中同时符合的fq条件的查询结果,例如:q=id:1&fq=sort:[1 TO 5],找关键字id为1 的,并且sort是1到5之间的。 |
| df | 默认的查询字段,一般默认指定。 |
| qt | (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。 |
| indent | 返回的结果是否缩进,默认关闭,用 indent=true |
| version | 查询语法的版本,建议不使用它,由服务器指定默认值。 |
二. Solr的检索运算符
| 符号 | 意义 |
|---|---|
| “:” | 指定字段查指定值,如返回所有值: |
| “?” | 表示单个任意字符的通配 |
| “*” | 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号) |
| “~” | 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。 |
AND || |
布尔操作符 |
| OR、&& | 布尔操作符 |
| NOT、!、- | (排除操作符不能单独与项使用构成查询) |
| “+” | 存在操作符,要求符号”+”后的项必须在文档相应的域中存在² |
| ( ) | 用于构成子查询 |
| [] | 包含范围检索,如检索某时间段记录,包含头尾,date:[201507 TO 201510] |
| {} | 不包含范围检索,如检索某时间段记录,不包含头尾date:{201507 TO 201510} |
三. 高亮
| 符号 | 意义 |
|---|---|
| h1 |
|
| hl.fl |
|
| hl.requireFieldMatch |
|
| hl.usePhraseHighlighter |
|
| hl.highlightMultiTerm |
|
| hl.fragsize | -返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。 |
四. 分组
官方wiki:http://wiki.apache.org/solr/SimpleFacetParameters#Facet_Fields_and_Facet_Queries,
这是facet的官方wiki,里面有facet各个参数的详细说明。所以这里只说一些常用的。
Facet是Solr的核心搜索功能,主要是导航(Guided Navigation)、参数化查询(Paramatic Search)。Facet的主要好处是在搜索的同时,可以按照Facet条件进行分组统计,给出导航信息,改善搜索体验。
Facet主要分为:Field Facet 和 Date Facet 两大类
1. Field Facet
facet 参数字段必须被索引
facet=on 或 facet=true
facet.field 分组的字段
facet.prefix 表示Facet字段前缀
facet.limit Facet字段返回条数
facet.offict 开始条数,偏移量,它与facet.limit配合使用可以达到分页的效果
facet.mincount Facet字段最小count,默认为0
facet.missing 如果为on或true,那么将统计那些Facet字段值为null的记录
facet.sort 表示 Facet 字段值以哪种顺序返回 .格式为 true(count)|false(index,lex),true(count) 表示按照 count 值从大到小排列,false(index,lex) 表示按照字段值的自然顺序 (字母 , 数字的顺序 ) 排列 . 默认情况下为 true(count)
2. Date Facet
对日期类型的字段进行 Facet. Solr 为日期字段提供了更为方便的查询统计方式 .注意 , Date Facet的字段类型必须是 DateField( 或其子类型 ). 需要注意的是 , 使用 Date Facet 时 , 字段名 , 起始时间 , 结束时间 , 时间间隔这 4 个参数都必须提供 .
| 符号 | 意义 |
|---|---|
| facet.date | 该参数表示需要进行 Date Facet 的字段名 , 与 facet.field 一样 , 该参数可以被设置多次 , 表示对多个字段进行 Date Facet. |
| facet.date.start | 起始时间 , 时间的一般格式为 ” 2015-12-31T23:59:59Z”, 另外可以使用 ”NOW”,”YEAR”,”MONTH” 等等 , |
| facet.date.end | 结束时间 |
| facet.date.gap | 时间间隔,如果 start 为 2015-1-1,end 为 2016-1-1,gap 设置为 ”+1MONTH” 表示间隔1 个月 , 那么将会把这段时间划分为 12 个间隔段 . |
| facet.date.hardend | 表示 gap 迭代到 end 时,还剩余的一部分时间段,是否继续去下一个间隔. 取值可以为 true |
例 start 为 2015-1-1,end 为 2015-12-21,gap 为 ”+1MONTH”, 如果hardend 为 false,则,最后一个时间段为 2015-12-1 至 2016-1-1; 反之,如果 hardend 为 true,则,最后一个时间段为 2015-12-1 至 2015-12-21.
注意:Facet的字段必须被索引,无需分词,无需存储。无需分词是因为该字段的值代表了一个整体概念,无需存储是因为一般而言用户所关心的并不是该字段的具体值,而是作为对查询结果进行分组的一种手段,给出相关的分组信息,从而改善搜索体验。
Solr之精确、匹配、排序、模糊查询-yellowcong的更多相关文章
- Solr基础理论【倒排索引,模糊查询】
一.简介 现有的许多不同类型 的技术系统,如关系型数据库.键值存储.操作磁盘文件的map-reduce[映射-规约]引擎.图数据库等,都是为了帮助用户解决颇具挑战性的数据存储与检索问题而设计的.而搜索 ...
- Solr的精确匹配搜索
情景: 利用Solr做一批词的逆文档频率.Solr中存储的每条数据为一篇文章,此时需要查出某词在多少篇文章中出现过,然后用公式:某词逆文档频率 = 总文章数 / (出现过某词的文章数+1) 来计算. ...
- hibernate.Criteria分页排序模糊查询
org.hibernate.Criteria criteria = simpleDAO.getSession().createCriteria(Event.class); Criterion c = ...
- CHARINDEX,REPLACE,LEFT+四大系统函数+模糊查询
select CHARINDEX('bob','my name is bob',1)--返回12 bob的第一个b在字符串中排第12(从1开始数) select CEILING(456.4)--45 ...
- solr之~模糊查询
有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有的人可能想要搜索某个前 ...
- solr之~模糊查询【转】
solr之~模糊查询 有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有 ...
- oracle SQL语句练习MERGE、模糊查询、排序、
Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language, ...
- 第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数
第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; ...
- 【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法
第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1, ...
随机推荐
- linux shell获取键盘输入
linux shell从键盘获取输入 代码1: #!/bin/bash #提示“Input your choice:”,把用户的输入保存入变量choice_user中read -p "Inp ...
- bzoj 2806 [Ctsc2012]Cheat——广义后缀自动机+单调队列优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2806 只想着怎么用后缀数据结构做,其实应该考虑结合其他算法. 可以二分那个长度 L .设当前 ...
- 记一次shell脚本编写及执行
首先cd进一个目录下 tauch tset.sh //新建一个test.sh文件 vim test.sh 编辑脚本 i 插入 #!/bin/bash data 按Esc键 再按ctrl+: wq + ...
- Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(4)
Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(4) 1.老样子,首先运行tcl脚本建工程: Vi ...
- win764位系统上让32位程序能申请到4GB内存方法
win764位系统上让32位程序能申请到4GB内存方法. 2016年09月18日 18:36:26 阅读数:1550 最近测试一个32位程序总是在1.2G左右内存时崩溃,怀疑是内存申请失败,本身32位 ...
- ios的并发队列控制库
QSDispatchQueue,在这里
- 实现java随机数Random的几招
一,在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,可以产生随机整数.随机float.随机double,随机long,这个也是我们经常用的一个 ...
- g6 cavans
{ // 默认模式 default: [ 'dragNode', 'dragEdge', 'dragBlank', 'clickBlankClearActive', 'resizeEdge', 'cl ...
- git clone 指定分支 拉代码
1.git clone 不指定分支 git clone http://10.1.1.11/service/tmall-service.git 2.git clone 指定分支 git clone -b ...
- uoj#119. 【UR #8】决战圆锥曲线
http://uoj.ac/problem/119 可以认为数据基本随机,于是可以直接用线段树维护,对每个询问在线段树上进行剪枝搜索. #include<bits/stdc++.h> ty ...