当前位置:文档之家› solr查询语法

solr查询语法

solr查询语法
Solr通过查询分析器的插件框架支持多种查询语法。

在现有的分析器实现的插件,在Javadoc中看到qparserplugin的所有子类,和在QueryParser wiki页面查看。

指定查询分析器
用户可以指定在大多数地方,接受使用localparams语法查询字符串查询类型,例如:下面的查询字符串指定Lucene/Solr查询的默认操作”AND“和默认field的“text”:
q={!lucene q.op=AND df=text}myfield:foo +bar –baz
在标准的SOLR搜索处理程序,该deftype参数可用于指定主查询的默认类型(IE:q参数)但它只影响主查询——所有其他查询参数的默认类型仍将Lucene。

q={!func}等效于solr标准查询的defType=func&q=popularity
Default QParserPlugin: LuceneQParserPlugin
标准查询分析器语法Sol分析器是的Lucene的查询语法的一个超集,某些字符特殊和那些字符如果你想
与Lucene查询分析器的差异
在solr 中查询差异报告:
1、范围查询[ a TO z ],前缀查询a*,和通配符查询*b是常数评分(所有匹配的文件得到相同的分数)。

评分因素TF IDF,index boost,是没有用的。

不限制terms次数的(如在Lucene的过去的版本)
2、A*可用于任一或两个端点来指定一个开放的范围查询。

field:[* TO 100]查询所有小与等于100的
field:[100 TO *]查询所有大于等于100的
field:[* TO *]查询所有文档
3、纯消极的查询(所有条款禁止)是允许的。

-inStock:false查询isStock字段值不是false的
-field:[* TO *]查询不在field字段内的值
4、函数查询
_val_:myfield
_val_:"recip(rord(myfield),1,2,3)"
4、嵌套的任何类型的查询分析器查询支持(通过qparserplugin)。

引用通常要封装嵌套查询如果它包含
保留字符。

例如:_query_:"{!dismax qf=myfield}how now brown cow"
虽然不是专门的语法差异,请注意如果你使用Solr”DateField”型,在这些领域的任何查询(典型的范围查询)应使用完整的ISO 8601的语法,,或datemath语法来获得相关数据。

∙timestamp:[* TO NOW]
∙createdate:[1976-03-06T23:59:59.999Z TO *]
∙createdate:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]∙pubdate:[NOW-1YEAR/DAY TO NOW/DAY+1DAY]
∙createdate:[1976-03-06T23:59:59.999Z TO 1976-03-06T23:59:59.999 Z+1YEAR]
∙createdate:[1976-03-06T23:59:59.999Z/YEAR TO 1976-03-06T23:59:5
9.999Z]
dismax和edismax查询分析器
(E)的dismax查询分析器提供了查询时间字段级升压的粒度,更少的特殊语法。

(E)dismax通常是最好的第一选择查询分析器面临Solr应用的用户。

(e)在这里详细描述了dismax处理参数:dismaxqparserplugin和extendeddismax。

注:特殊字符转义网址
请注意,在Solr查询语法的许多特征(最显着的加号:“+”)是在URL中的特殊字符,所以在手动构建请
更多功能
在Lucene/Solr查询字符串里嵌入另一种类型一个查询,只需使用魔法的字段名称_query_。

下面的示例将Lucene的查询类型:嵌入的另一个Lucene查询:
text:"roses are red" AND _query_:"type:poems"
当然,这不是它自己太有用了,但它变得非常强大的联合查询分析器框架和局部参数,使我们能够改变查询的类型。

下面的示例将在一个正常的Lucene的查询中嵌入dismax查询:
text:hi AND _query_:"{!dismax qf=title pf=title}how now brown cow"
还有一个嵌套查询分析器的插件,可以创造一个纯粹的嵌套查询。

是一个嵌套查询不包含查询更有用吗?令人惊讶的是,它允许查询请求进一步分解。

例如,下面的允许客户机指定他们想要的一些新近加入日期增加相关性得分的一个简单的方法,而准确的查询类型到Solr服务器配置(通过在solrconfig.XML查询处配置)的客户查询指定查询$datefunc:
q=how now brown cow&bq={!query v=$datefunc}
在 solrconfig.xml 的配置应该是
<lst name="defaults">
<str name="datefunc">{!func}recip(rord(date),1,1000,1000)</str>
[...]。

相关主题