设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] solr搜索之solrJ语法(三)

[复制链接]

尚未签到

发表于 2018-11-1 11:19:15 | 显示全部楼层 |阅读模式
上一篇:solr搜索之demo和集成IKAnalyzer(二)
1.1       solr语法
  一.基本查询
  q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*,

  fl  指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl=>  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>
  1. Field>  facet 参数字段必须被索引

  facet=on 或>  facet.field 分组的字段
  facet.prefix  表示Facet字段前缀

  facet.limit  >  facet.offict  开始条数,偏移量,它与facet.limit配合使用可以达到分页的效果

  facet.mincount >  facet.missing  如果为on或true,那么将统计那些Facet字段值为null的记录

  facet.sort 表示>
  2. Date>
  对日期类型的字段进行>
  facet.date 该参数表示需要进行 Date>  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的字段必须被索引,无需分词,无需存储。无需分词是因为该字段的值代表了一个整体概念,无需存储是因为一般而言用户所关心的并不是该字段的具体值,而是作为对查询结果进行分组的一种手段,给出相关的分组信息,从而改善搜索体验。
1.2    SolrJ查询语法总结
  //AND 并且
  SolrQuery params = newSolrQuery("name:apple AND manu:inc");
  //OR 或者
  params.setQuery("name:apple ORmanu:apache");
  //空格等同于 OR
  params.setQuery("name:servermanu:dell");
  //params.setQuery("name:solr -manu:inc");
  //params.setQuery("name:server +manu:dell");
  //查询name包含solr apple
  params.setQuery("name:solr,apple");
  //manu不包含inc
  params.setQuery("name:solr,apple NOTmanu:inc");
  //50

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629318-1-1.html 上篇帖子: solr搜索之demo和集成IKAnalyzer(二) 下篇帖子: 不启动Solr,使用Solr的analyzer chain (使用mmseg4j分词)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表