美文网首页
Solr查询

Solr查询

作者: waynedeng | 来源:发表于2016-01-30 21:25 被阅读1599次

在Rails使用Sunspot习惯了,可能对Solr的原生查询完全不了解,其实Sunspot对Solr的查询进行了非常完美的封装,Sunspot的查询会转换为这样的请求(参见solr.log):

INFO  - 2016-01-30 20:19:20.893; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select params={fl=*+score&sort=updated_at_d+desc&start=0&q=安徽&qf=title_text+content_text&wt=ruby&fq=type:Bid\:\:Info&fq=close_tag_i:0&rows=20&defType=edismax} hits=1 status=0 QTime=20

  {fl=*+score&sort=updated_at_d+desc&start=0&q=安徽&qf=title_text+content_text&wt=ruby&fq=type:Bid\:\:Info&fq=close_tag_i:0&rows=20&defType=edismax}

这个才是Solr服务器真正能够理解的查询参数,当我们遇到使用Sunspot无法解决的问题的时候,就需要直接越过Sunspot来调用Solr了。Solr接受的是HTTP协议的接口调用,因此查询的参数都是通过URL参数来进行传递,而且参数中的值都需要进行URL的编码。

下面来详细介绍Solr的查询语法。

Solr默认有三种查询解析器(Query Parser):

  • Standard Query Parser
  • DisMax Query Parser
  • Extended DisMax Query Parser (eDisMax)

第一种是标准的Parser,最后一种是最强大的,也是Sunspot默认使用的Parser。

支持的参数:

  • defType: 选择查询解析器类型,例如dismax, edismax
  • q:主查询参数(field_name:value)
  • sort:排序,例如score desc,price asc
  • start:起始的数据偏移offset,用于分页
  • raws:一次返回的数量,用于分页
  • fq:filter query 返回结果的过滤查询
  • fl:fields to list 返回的字段(*, score)
  • debug:返回调试信息,debug=timing,debug=results
  • timeAllowed:超时时间
  • wt:response writer返回的响应格式

下面是DisMax Parser可以使用的:

  • qf:query fields,指定查询的字段,指定solr从哪些field中搜索,没有值的时候使用df
  • mm:最小匹配比例
  • pf:phrase fields
  • ps:phrase slop
  • qs:query phrase slop

特殊符号意义:

  • ?:te?t 单个字符匹配
  • *:tes* 多个字符匹配
  • ~:fuzzy searches(模糊匹配),roam~,roams/foam/foams
  • count:{1 TO 10}:range search 范围检索
  • ^:Boosting a Term(升级权重),jakarta^4 apache, "酒店"^4 "宾馆"
  • ^=:Constant Score with(指定分数),(description:blue OR color:blue)^=1.0 text:shoes

逻辑操作

  • AND 或者 &&
  • NOT 或者 !
  • OR 或者 !!
  • + 必须满足
  • - 剔除,比如 title: -安徽,返回的是title中不含有"安徽"的所有结果

回顾复习

    fl=*+score
    sort=updated_at_d+desc
    start=0
    q=安徽
    qf=title_text+content_text
    wt=ruby
    fq=type:Bid\:\:Info
    fq=close_tag_i:0
    rows=20
    defType=edismax

夏书记的需求:

q=(酒店 OR type_i:0)

Solr的查询可以在图形界面中进行测试:

Paste_Image.png

相关文章

  • 使用solrj连接solr集群进行操作

    1.solr配置文件 2.solr配置 3.solr查询接口--做两个接口 3.使用solr查询数据 4.封装so...

  • solr查询参数

    今天总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的操作,都是...

  • 大数据学习没有基础怎么办?小白0基础快速学习大数据solr

    科多大数据带你看,小白怎么快速学习solr 一、查询参数说明 在做solr查询的时候,solr提供了很多参数来扩展...

  • Solr查询

    在Solr进行查询时候界面如下: 解释下各部分的意思: 很多都是望名知意,如sort就是根据某个字段排序,star...

  • Solr查询

    在Rails使用Sunspot习惯了,可能对Solr的原生查询完全不了解,其实Sunspot对Solr的查询进行了...

  • solr8.3.1配置+IK分词器配置+数据库配置

    参考文献 Solr分词搜索solrj简单查询 solr-8.3.1版本连接MySQL、配置IK分词器 Solr配置...

  • Solr搜索

    参见上文solr概述 - 简书 搜索 Solr搜索参数介绍 如图,solr基本的查询参数如上。 q搜索关键词q的值...

  • solr高级查询

    schema.xml中添加field域 使用dataimport插件批量导入数据 添加依赖的jar包(solr-d...

  • solr分组查询

    facet搜索 group搜索 solr的group搜索 按组查询的字段不能是int类型,必须是string类型,...

  • Solr分组查询

    facet搜索 group搜索 solr的group搜索 按组查询的字段不能是int类型,必须是string类型,...

网友评论

      本文标题:Solr查询

      本文链接:https://www.haomeiwen.com/subject/kgtskttx.html