Solr 搜索的过程和所需要的参数

一个典型的搜索处理过程,以及所需要的参数如下:
  1. qt:指定一个RequestHandler,即/select,缺省是使用DisMax RequestHandler
  2. defType:选择一个query parser,缺省是RequestHandler中配置的那个
  3. qf:指定需要搜索的field,如果不指定就搜索所有的field
  4. start, rows:指明分页参数
  5. fq:指明需要如何过滤搜索结果,以及缓存搜索结果
  6. wt:指定搜索结果的格式,比如json或xml

搜索所需要的参数基本上可以分为三类:
  • 需要搜索的字符串
  • 调整搜索的参数(指定被搜索的field、为某些field增加权值、等等)
  • 搜索结果展示的参数(排序、结果过滤、分页、高亮显示、等等)

搜索请求参数:
参数
说明
q
Query,要搜索的内容。
  • 如果要搜索一个句子,用引号引起来:q="Hello wolrd"
  • 如果指定搜索某个域:q=field_name:content
  • 如果是中文,用引号引起来,就是全内容匹配才返回,如:q="笔记"
  • 如果要搜索多个单词、句子,使用加号(+):q="笔记"+"配置"
  • 如果要排除含有某个关键字的,使用减号(-):q="笔记"-"配置"
fq
Filter Query,搜索结果过滤(结果会被缓存起来):
  • fq=popularity:[10 to *]:只返回popularity大于10的结果
  • 需要同时满足两个条件的情况:fq=popularity:[10 TO *]&fq=section:0
  • 上面这种也可以写成:fq=popularity:[10 TO *]+fq=section:0
后两种的不同点:前一种:搜索结果分开存在缓存中,然后取交集;后一种:搜索结果存在一个缓存中
sort
指定搜索结果按照某个域来排序,例子:
  • score desc(缺省):按照搜索分数降序排序
  • price asc:按照“price”域升序排序
  • nStock desc, price asc:先按照nStock降序,再按照price升序
start, rows
返回第start条开始,一共rows条记录,例子:
  • start=11&rows=100
  • 缺省:start=0, rows=10
fl
Field List,要返回的域,比如“id”、*,如果有多个,用逗号(,)或空格分开,还可以返回score。例子:
  • fl=id,name
  • fl=id,score
  • fl=*,score
df
Default Field,默认的查询字段,重新指定并覆盖schema.xml中的default field
wt
Writer,指定一个writer以返回不同的格式,比如:json, xml...
facet
统计查询结果:
按某个域统计:facet=true&facet.field=author(按照“author”这个域统计)
defType
指定一个Request Handler,然后使用它所配置的parser,比如dismax, edismax来执行搜索。缺省是dismax,即"lucene" parser。dismax、edismax支持为每个被搜索的域指定权值,以影响score。dismax 是 Maximum Disjunction 的缩写。
qf
Query Field,指定要搜索的域,覆盖df,同时可以为某个域设置权值,需要配合defType=dismax或defType=edismax,例子:
  • defType=dismax&qf=author^10
  • defType=dismax&qf=author^10+name^2+content


注:关于Maximum Disjunction的定义:
A query that generates the union of documents produced by its subqueries, and that scores each document with the maximum score for that document as produced by any subquery, plus a tie breaking increment for any additional matching subqueries.
大概就是:一个查询由若干个子查询组成,每个子查询都有一个得分,总分=最大分+其他子查询的分数×tieBreakerMultiplier。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值