今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事。这里先列出solr查询所需要的参数

  wiki 地址:http://wiki.apache.org/solr/FrontPage, 里面有各个参数详细的介绍。

  

  一.基本查询

  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|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。

  version   查询语法的版本,建议不使用它,由服务器指定默认值。

  二. Solr的检索运算符

  “:”  指定字段查指定值,如返回所有值*:*

  “?”  表示单个任意字符的通配

  “*”  表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)

  “~”  表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。

  AND、||  布尔操作符

  OR、&&  布尔操作符

  NOT、!、-(排除操作符不能单独与项使用构成查询)

  “+”  存在操作符,要求符号”+”后的项必须在文档相应的域中存在²

  ( )  用于构成子查询

  []  包含范围检索,如检索某时间段记录,包含头尾,date:[201507 TO 201510]

  {}  不包含范围检索,如检索某时间段记录,不包含头尾date:{201507 TO 201510}

  三. 高亮

  h1  是否高亮,hl=true,表示采用高亮

  hl.fl  设定高亮显示的字段,用空格或逗号隔开的字段列表。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用hl.requiredFieldMatch选项。

  hl.requireFieldMatch   如果置为true,除非用hl.fl指定了该字段,查询结果才会被高亮。它的默认值是false。

  hl.usePhraseHighlighter   如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。

  hl.highlightMultiTerm   如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。

  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|false, 默认为 false.

    例 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客户端查询参数总结的更多相关文章

  1. Solr学习总结(四)Solr查询参数

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  2. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  3. Solr查询参数sort(排序)

    摘要: Solr查询每一次返回的数据都有一定的顺序,特定顺序的结果对于业务来说可能非常重要. 不指定排序 一般我们不指定排序规则,这样的结果能满足大部分需求,默认是用文档的得分作为排序标准.相当于加上 ...

  4. solr的查询语法、查询参数、检索运算符

    转载自:http://martin3000.iteye.com/blog/1328931 1.查询语法 solr的一些查询语法 1.1. 首先假设我的数据里fields有:name, tel, add ...

  5. Solr专题(二)详解Solr查询参数

    一.前言 上节我们讲到了怎样去搭建solr服务,作为全文检索引擎,怎样去使用也是比较关键的.Solr有一套自己的查询方式,所以我们需要另外花时间去学习它的这套模式. 启动solr solr start ...

  6. 在solr客户端删除库中的数据

    1.在solr客户端,访问你的索引库(我认为最方便的方法) 1)documents type 选择 XML 2)documents 输入下面语句<delete><query>* ...

  7. Solr分组查询

     项目中需要实时的返回一下统计的东西,因此就要进行分组,在获取一些东西,代码拿不出来,因此分享一篇,还是很使用的. facet搜索 /** * * 搜索功能优化-关键词搜索 * 搜索范围:商品名称.店 ...

  8. java操作solr实现查询功能

    一.封装的查询方法 /** * solr查询方法 * @param client solr客户端 * @param query solr查询对象 * @return list集合 * @throws ...

  9. gin的url查询参数解析

    gin作为go语言最知名的网络库,在这里我简要介绍一下url的查询参数解析.主要是这里面存在一些需要注意的地方.这里,直接给出代码,和运行结果,在必要的地方进行分析. 代码1: type Struct ...

随机推荐

  1. hdu 3172

    http://acm.hdu.edu.cn/showproblem.php?pid=3172 题意:输出每对朋友的关系网大小 并查集的时候维护一个数组记录根节点的大小即可,水题,这题坑在T组数据这个也 ...

  2. 解决magento新闻邮件发送一直处于“正在发送”状态问题

    今天在弄magento新闻邮件发送时候发现,单个邮件发送完全没有问题,但是新闻邮件订阅死活都不成功,国内国外的帖子都翻了一遍没有用,最后还是得靠自己了,于是开始慢慢找问题   首先想到是不是cront ...

  3. LeetCode Convert Sorted Array to Binary Search Tree(数据结构)

    题意: 将一个有序的数组建成一棵平衡的BST树. 思路: 因为数组已经有序,每次可以从中点开始建根,再递归下去分别处理左/右子树. /** * Definition for a binary tree ...

  4. Redis 设计与实现读书笔记一 Redis字符串

    1 Redis 是C语言实现的 2 C字符串是 /0 结束的字符数组 3 Redis具体的动态字符串实现 /* * 保存字符串对象的结构 */ struct sdshdr { // buf 中已占用空 ...

  5. 解密Redis持久化

    原文 http://blog.nosqlfan.com/html/3813.html 本文内容来源于Redis作者博文,Redis作者说,他看到的所有针对Redis的讨论中,对Redis持久化的误解是 ...

  6. Highcharts的基本属性和方法详解

    Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用. 目前Hig ...

  7. div+css 遮罩层

    CSS样式部分: ---------------------------------- <style type="text/css">#loading-mask{    ...

  8. ZOJ 1151 Word Reversal

    原题链接 题目大意:给一句话,把每个单词倒序,然后输出. 解法:我是用了一个堆栈,以空格来拆分单词,把每个字母压入堆栈,然后依次输出. 参考代码: /* * 字符串反向,140ms,188kb * 单 ...

  9. css link和@import区别

    1.link语法结构 <link href="CSSurl路径" rel="stylesheet" type="text/css" / ...

  10. Objective-c——UI基础开发第九天(QQ好友列表)

    一.知识点: 1.双模型的嵌套使用 2.Button的对齐方式 3.优化UITableView的加载 4.layoutSubview的使用 5.cell的折叠代理 二.双模型的嵌套定义: 注意是将se ...