solr查询参数、语法、函数总结

查询参数:

qt query type,指定那个类型来处理查询请求,一般不用指定,默认是standard。

fl 查询返回哪些字段。

q query(查询字符串,必须的)。

fq 过滤查询 (filter query)。

start 分页用,起始位置。

rows 分页用,返回多少条记录。

sort 排序。

wt 输出格式 默认为json,可以有xml,python,ruby,php,csv

df 默认查询字段。

bf (boost function) 额外的评分字段,这个是可以影响score的打分的 影响最终评分的一个计算函数 用函数计算某个字段的

权重 里面字段必须是索引的,bf的函数查看solr api文档 。

pf 设置查询字段,这样在schema中不用制定默认字段。

qf query fields,各自段分配的权重 (每个域的权重)。

mm mm: minimal should match。Solr支持三种查询clause,即“必须出现”,“不能出现”和“可以出现”,分别对应于AND, -,OR。

indent 缩进,默认关闭。用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要。

defType 指定QueryParser 常用defType=lucene, defType=dismax, defType=edismax。查询语法:布尔操作:AND、OR和NOT布尔操作(必须大写)

函数查询:使用dismax中的bf参数

使用明确为函数查询的参数,比如说dismax中的bf(boost function)这个参数。 注意:bf这个参数是可以接受多个函数查询的,它们

之间用空格隔开,它们还可以带上权重。所以,当我们使用bf这个参数的时候,我们必须保证单个函数中是没有空格出现的,不然程序

有可能会以为是两个函数。

示例:q=dismax&bf="ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.32. 函数的格式(Function Query Syntax)目前,function query 并不支持 a+b 这样的形式,我们得把它写成一个方法形式,这就是 sum(a,b).3. 使用函数查询注意事项1) 用于函数查询的field必须是被索引的;2) 字段不可以是多值的(multi-value)4. 可以利用的函数 (available function)1) constant:支持有小数点的常量; 例如:1.5 ;SolrQuerySyntax:_val_:1.5

2) fieldvalue:这个函数将会返回numeric field的值,这个字段必须是indexd的,非multiValued的。格式很简单,就是该字段的名字。

如果这个字段中没有这样的值,那么将会返回0。

3) ord:对于一个字段,它所有的值都将会按照字典顺序排列,这个函数返回你要查询的那个特定的值在这个顺序中的排名。这个字

段,必须是非multiValued的,当没有值存在的时候,将返回0。例如:某个特定的字段只能去三个值,“apple”、“banana”、“pear”,那

么ord(“apple”)=1,ord(“banana”)=2,ord(“pear”)=3.需要注意的是,ord()这个函数,依赖于值在索引中的位置,所以当有

文档被删除、或者添加的时候,ord()的值就会发生变化。当你使用MultiSearcher的时候,这个值也就是不定的了。

4) rord:这个函数将会返回与ord相对应的倒排序的排名。格式: rord(myIndexedField)。5) sum:这个函数的意思就显而易见啦,它就是表示“和”啦。格式:sum(x,1) 、sum(x,y)、 sum(sqrt(x),log(y),z,0.5)6) product:product(x,y,…)将会返回多个函数的乘积。格式:product(x,2)、product(x,y)7) div:div(x,y)表示x除以y的值,格式:div(1,x)、div(sum(x,100),max(y,1))8) pow:pow表示幂值。pow(x,y) =x^y。例如:pow(x,0.5) 表示开方pow(x,log(y))9) abs:abs(x)将返回表达式的绝对值。格式:abs(-5)、 abs(x)10) log:log(x)将会返回基数为10,x的对数。格式: log(x)、 log(sum(x,100))11) Sqrt:sqrt(x) 返回 一个数的平方根。格式:sqrt(2)、sqrt(sum(x,100))12) Map:如果 x>=min,且x<=max,那么map(x,min,max,target)=target.如果 x不在[min,max]这个区间内,那么map(x,min,max,target)=x.格式:map(x,0,0,1)13) Scale:scale(x,minTarget,maxTarget) 这个函数将会把x的值限制在[minTarget,maxTarget]范围内。

14) query :query(subquery,default)将会返回给定subquery的分数,如果subquery与文档不匹配,那么将会返回默认值。任何的查询

还有不愿面对失败的尴尬。曾经怀有远大理想,拥有完美的憧憬。

solr查询参数、语法、函数总结

相关文章:

你感兴趣的文章:

标签云: