Solr查询

2016-01-30  本文已影响1599人  waynedeng

在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):

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

支持的参数:

下面是DisMax Parser可以使用的:

特殊符号意义:

逻辑操作

回顾复习

    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
上一篇下一篇

猜你喜欢

热点阅读