`

solr---参数说明

    博客分类:
  • solr
阅读更多

fl: 是逗号分隔的列表,用来指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。

defType: 指定query parser,常用defType=lucene, defType=dismax, defType=edismax

 

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

 

df: 默认的查询字段

 

q: query。

q.alt: 当q字段为空时,用于设置缺省的query,通常设置q.alt为*:*。

q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑)

qf: query fields,指定solr从哪些field中搜索。

 

pf: 用于指定一组field,当query完全匹配pf指定的某一个field时,来进行boost。

简言之pf的作用是boosting phrases over words。

 

fq: filter query,过虑查询。

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

在默认情况下,使用OR这个clause。mm用于设置在使用OR这个clause时,需要出现最少的满足条件的clause数量,详见这里。

 

ps: Phrase Slop. 

Amount of slop on phrase queries built for "pf" fields (affects boosting). ps is about pf parameter. 

ps affects boosting, if you play with ps value, numFound and result set do not change. But the order of result set change. This is about the phrase query that is constructed out of the entire "q" param. ps is slop applied to the phrases created from the entire query for evaluating pf boosts. ps will only (potentially) change the ranked ordering of your result set, by loosening what a "phrase match" means to the pf boost.

 

ps的例子:

 

Lets say your query is apache solr. (without quotation marks) 

 

Lets say these three documents contains all of these words and returned. 

 

1-) solr is built on the top of apache lucene. 

2-) apache solr is fast, mature and popular. 

3-) solr is hosted under apache umbrella. 

 

Even if you don't use pf and ps parameters, those documents will be in result set anyway. Lets say that they appear in this order 1,2,3. 

 

Then we include pf and ps parameter, q=apache solr&pf=title^1.2&ps=1 

Second document is boosted, lets say it comes first now. The order is changed. The documents - that have the all query words close each other - are boosted. Again the same three documents are returned.

 

qs: Query Phrase Slop. Amount of slop on phrase queries explicitly included in the user's query string (in qf fields; affects matching). qs affects matching. If you play with qs, numFound changes. This parameter is about when you have explicit phrase query in your raw query. i.e. &q="apache lucene" . qs is slop applied to phrases explicitly in the &q with double quotes. qs will (potentially) change your result set.

 

tie: tie breaker。

 

bq: 对某个field的value进行boost,例如brand:IBM^5.0。

 

bf: Function (with optional boosts) that will be included in the user's query to influence the score. Any function supported natively by Solr can be used, along with a boost value, e.g.: recip(rord(myfield),1,2,3)^1.5

 

wt: writer type,指定输出格式,可以有 xml, json, php, phps。

 

indent – 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。

version – 查询语法的版本,建议不使用它,由服务器指定默认值。 

 

 

 

hight:

     hl-highlight,h1=true,表示采用高亮。可以用h1.fl=field1,field2 来设定高亮显示的字段。

hl.fl: 用空格或逗号隔开的字段列表。

要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高 亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用 hl.requiredFieldMatch选项。

hl.requireFieldMatch:如果置为true,除非该字段的查询结果不为空才会被高亮。

它的默认值是false,意味 着它可能匹配某个字段却高亮一个不同的字段。如果hl.fl使用了通配符,那么就要启用该参数。尽管如此,如果你的查询是all字段(可能是使用 copy-field 指令),那么还是把它设为false,这样搜索结果能表明哪个字段的查询文本未被找到

hl.usePhraseHighlighter:如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。

hl.highlightMultiTerm:如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。

默认为false,同时hl.usePhraseHighlighter要为true。

hl.snippets:这是highlighted片段的最大数。

默认值为1,也几乎不会修改。如果某个特定的字段的该值被置为0(如f.allText.hl.snippets=0),这就表明该字段被禁用高亮了。你可能在hl.fl=*时会这么用。

hl.fragsize:每个snippet返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。大字段时不会这么做

hl.mergeContiguous:如果被置为true,当snippet重叠时会merge起来。

hl.maxAnalyzedChars:会搜索高亮的最大字符,默认值为51200,如果你想禁用,设为-1

hl.alternateField:如果没有生成snippet(没有terms 匹配),那么使用另一个字段值作为返回。

hl.maxAlternateFieldLength:如果hl.alternateField启用,则有时需要制定alternateField的最大字符长度,默认0是即没有限制。所以合理的值是应该为hl.snippets * hl.fragsize这样返回结果的大小就能保持一致。

hl.formatter:一个提供可替换的formatting算法的扩展点。

默认值是simple,这是目前仅有的选项。显然这不够用,你可以看看org.apache.solr.highlight.HtmlFormatter.java 和 solrconfig.xml中highlighting元素是如何配置的。

注意在不论原文中被高亮了什么值的情况下,如预先已存在的em tags,也不会被转义,所以在有时会导致假的高亮。

hl.fragmenter:这个是solr制定fragment算法的扩展点。gap是默认值。regex是另一种选项,

这种选项指明highlight的边界由一个正则表达式确定。这是一种非典型 的高级选项。为了知道默认设置和fragmenters (and formatters)是如何配置的,可以看看solrconfig.xml中的highlight段。

regex 的fragmenter有如下选项:

hl.regex.pattern:正则表达式的pattern

hl.regex.slop:这是hl.fragsize能变化以适应正则表达式的因子。

默认值是0.6,意思是如果hl.fragsize=100那么fragment的大小会从40-160.

 

----------------------------------------------------------------------------------------------------------

一. Query参数 
1. CoreQueryParam查询的参数 
1) q: 查询字符串,必须的。 
2) q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定。 
3) df: 默认的查询字段,一般默认指定。 
4) qt: query type,指定查询使用的Query Handler,默认为“standard”。 
5) wt: writer type。指定查询输出结构格式,默认为“xml”。在solrconfig.xml中定义了查询输出格式:xml、json、python、ruby、php、phps、custom。 
6) echoHandler:是否在查询结果中显示使用的Query Handler名称。 
7) echoParams:是否显示查询参数。none:不显示;explicit:只显示查询参数;all:所有,包括在solrconfig.xml定义的Query Handler参数。 
8) indent - 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。 
9) version - 查询语法的版本,建议不使用它,由服务器指定默认值。 
 
2. CommonQueryParameters 
1) sort:排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]„ 。
示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。。 
2) start:用于分页定义结果起始记录数,默认为0。 
3) rows:用于分页定义结果每页返回记录数,默认为10。 
4) fq:filter query。使用Filter Query可以充分利用Filter Query Cache,提高检索性能。作用:在q查询符合结果中同时是fq查询符合的,
例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。 
5) fl:field list。指定返回结果字段。以空格“ ”或逗号“,”分隔。 
6) debugQuery:设置返回结果是否显示Debug信息。 
7) explainOther:设置当debugQuery=true时,显示其他的查询说明。 
8) defType:设置查询解析器名称。 
9) timeAllowed:设置查询超时时间。 
10) omitHeader:设置是否忽略查询结果返回头信息,默认为“false”。 
 
二. 查询语法 
1. 匹配所有文档:*:* 

2. 强制、阻止和可选查询: 
1) Mandatory:查询结果中必须包括的 (for example, only entry name containing the word make) Solr/Lucene Statement:+make, +make +up ,+make +up +kiss 
2) prohibited: (for example, all documents except those with word believe) Solr/Lucene Statement:+make +up -kiss 3) optional:Solr /Lucene Statement:+make +up kiss 
 
3. 布尔操作:AND、OR和NOT布尔操作(必须大写)与Mandatory、optional和prohibited相似。 
1) make AND up = +make +up :AND左右两边的操作都是mandatory 
2) make || up = make OR up=make up :OR左右两边的操作都是optional 
3) +make +up NOT kiss = +make +up –kiss 
4) make AND up OR french AND Kiss不可以达到期望的结果,因为AND两边的操作都是mandatory的。  

4. 子表达式查询(子查询):可以使用“()”构造子查询。 
For ex:(make AND up) OR (french AND Kiss) 
 
5. 子表达式查询中阻止查询的限制: 
For ex:make (-up):只能取得make的查询结果;要使用make (-up *:*)查询make或者不包括up的结果。  

6. 多字段fields查询:通过字段名加上分号的方式(fieldName:query)来进行查询 
For ex:entryNm:make AND entryId:3cdc86e8e0fb4da8ab17caed42f6760c  

7. 通配符查询(wildCard Query): 
1) 通配符?和*:“*”表示匹配任意字符;“?”表示匹配出现的位置。 
For ex:ma?*(ma后面的一个位置匹配),ma??*(ma后面两个位置都匹配) 
2) 查询字符必须要小写:+Ma +be**可以搜索到结果;+Ma +Be**没有搜索结果 
3) 查询速度较慢,尤其是通配符在首位:主要原因一是需要迭代查询字段中的每个term,判断是否匹配;二是匹配上的term被加到内部的查询,当terms数量达到1024的时候,查询会失败。 
4) Solr中默认通配符不能出现在首位(可以修改QueryParser,设置 setAllowLeadingWildcard为true) 
5) set setAllowLeadingWildcard to true. 

8. 模糊查询、相似查询:不是精确的查询,通过对查询的字段进行重新插入、删除和转换来取得得分较高的查询解决(由Levenstein Distance Algorithm算法支持)。 
1) 一般模糊查询:for ex:make-believ~ 
2) 门槛模糊查询:对模糊查询可以设置查询门槛,门槛是0~1之间的数值,门槛
越高表面相似度越高。For ex:make-believ~0.5、make-believ~0.8、make-believ~0.9  

9. 范围查询(Range Query):Lucene支持对数字、日期甚至文本的范围查询。结束的范围可以使用“*”通配符。 
For ex: 
1) 日期范围(ISO-8601 时间GMT):sa_type:2 AND a_begin_date:[1990-01-01T00:00:00.000Z TO 1999-12-31T24:59:99.999Z] 
2) 数字:salary:[2000 TO *] 3) 文本:entryNm:[a TO a] 
 
10. 日 期匹 配:YEAR, MONTH, DAY, DATE (synonymous with DAY) HOUR, MINUTE, SECOND, MILLISECOND, and MILLI (synonymous with MILLISECOND) 可以被标志成日期。 
For ex: 
1) r_event_date:[* TO NOW-2YEAR]:2年前的现在这个时间 
2) r_event_date:[* TO NOW/DAY-2YEAR]:2年前前一天的这个时间 
 
三. 函数查询(Function Query) 
函数查询 可以利用 numeric域的值 或者 与域相关的的某个特定的值的函数,来对文档进行评分。 
1. 使用函数查询的方法 
这里主要有三种方法可以使用函数查询,这三种s方法都是通过solr http接口的。 
1) 使用FunctionQParserPlugin。ie: q={!func}log(foo) 
2) 使用“_val_”内嵌方法内嵌在正常的solr查询表达式中。即,将函数查询写在 q这个参数中,这时候,我们使用“_val_”将函数与其他的查询加以区别。 ie:entryNm:make && _val_:ord(entryNm)  
3) 使 用dismax中的bf参数使用明确为函数查询的参数,比如说dismax中的bf(boost function)这个参数。  注意:bf这个参数是 可以接受多个函数查询的,它们之间用空格隔开,它们还可以带上权重。所以,当我们使用bf这个参数的时候,我们必须保证单个函数中是没有空格出现的,不然 程序有可能会以为是两个函数。 
For ex: 
 q=dismax& bf="ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3   2. 函数的格式 (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与文档不匹配,那么将会返回默认值。任何的查询类型都是受支持的。可以通过引用的方式,也可以 直接指定查询串。 
例子:q=product(popularity, query({!dismax v='solr rocks'}) 将会返回popularity和通过dismax 查询得到的分数的乘积。 
q=product(popularity, query($qq)&qq={!dismax}solr rocks 跟上一个例子的效果是一样的。不过这里使用的是引用的方式 
q=product(popularity, query($qq,0.1)&qq={!dismax}solr rocks 在前一个例子的基础上又加了一个默认值。 
15)  linear: inear(x,m,c)表示 m*x+c ,其中m和c都是常量,x是一个变量也可以是一个函数。例如: linear(x,2,4)=2*x+4. 
16) Recip:recip(x,m,a,b)=a/(m*x+b) 其中,m、a、b是常量,x是变量或者一个函数。当a=b,并且x>=0的时候,这个函数的最大值是1,值的大小随着x的增大而减小。例 如:recip(rord(creationDate),1,1000,1000) 
17) Max: max(x,c)将会返回一个函数和一个常量之间的最大值。 例如:max(myfield,0)

 

 

 

 

分享到:
评论

相关推荐

    apache-solr-ref-guide-7.4(官方英文-文字版本)

    1. **Solr 控制脚本参考**:详细介绍了用于管理和控制 Solr 实例的命令行工具及其参数,包括启动、停止和监控等操作。 2. **Solr 配置文件**:阐述了 Solr 配置文件的结构和作用,并提供了一些常用的配置项示例。 ...

    apache-solr-ref-guide

    安装过程中可能会涉及到设置环境变量、配置Solr服务的端口以及其他相关参数。Solr提供了一个易于使用的基于Web的管理界面,开发者可以通过Web界面来管理Solr配置文件,提交查询,查看日志文件设置以及监控和控制...

    bbop-widget-solr-autocomplete:Solr的自动完成小部件

    为了在项目中使用这个小部件,开发者需要遵循README中的指导,正确引入库文件,并配置与Solr服务器的通信参数。同时,还需要确保项目环境支持所需的JavaScript库(例如jQuery或类似的DOM操作库),以便bbop-widget-...

    solr-forward-auth-plugin:Solr的简单正向身份验证插件

    4. **文档**:可能包含了如何安装、配置和使用插件的说明,以及示例配置。 在部署和使用`solr-forward-auth-plugin`时,你需要考虑以下几个关键点: 1. **安装**:将插件的JAR文件添加到Solr的`lib`目录,使得Solr...

    solr教材-PDF版

    - **1.4.3 solr的各包的说明**:Solr的各个包按照功能模块划分,如org.apache.solr.client包包含了客户端相关的类,org.apache.solr.update包则负责索引更新等功能。 **1.5 版本说明** - **1.5.1 1.3版本**:介绍...

    solr定时增量更新jar包1.4

    2. **编写data-config.xml**:在这个文件中,你需要详细描述数据源的信息,如数据库连接参数、查询语句、需要索引的字段等。增量更新的关键在于如何定义增量标识,通常是基于数据的最后修改时间或唯一ID。 3. **...

    solr入门教程

    在浏览器中输入`http://localhost:8081/solr`,如果出现Solr的管理界面,说明Solr已经成功部署。 接下来,你可以通过Solr的Web用户界面(UI)添加Core。每个Core代表一个独立的索引环境。在`solr_home`目录下创建新...

    apache-tomcat8.5.4-solr7-sql-ik-8081

    "readme说明" 提示我们需要修改目录和数据库信息以适应本地环境。这意味着项目包含了自定义配置的步骤,例如设置数据库连接参数、Tomcat的工作目录等。在启动Tomcat之前,你需要按照readme文件中的指示进行操作,...

    Solr操作说明文档

    "Solr 操作说明文档" Solr 是一个基于 Lucene 的企业搜索平台,它提供了强大的搜索功能和高效的索引处理能力。SolrCloud 是 Solr 的分布式搜索解决方案,能够提供高可用性和可扩展性的搜索服务。下面是 Solr 操作...

    solr-slider:通过 Slider 在 YARN 上 Solr

    此外,请确保您的conf/slider-client.xml文件设置了 ResourceManager 地址,这样您就不必在每个滑块命令中都包含--manager参数。 &lt;name&gt;yarn.resourcemanager.address &lt;value&gt;localhost:8032 在这些说明中,...

    solr+tomcat处理后的简易部署+说明文档(下)

    本篇将详细讲解如何进行Solr与Tomcat的简易部署,并结合提供的资源进行说明。 首先,我们需要了解Solr的基本概念。Solr是Apache软件基金会的一个开源项目,基于Lucene库,提供了一个分布式、可扩展、高性能的搜索和...

    Solr4+SolrCloud安装使用手册和详细说明,参考官方文档整理.

    以下是对 SolrCloud 安装和使用进行的详细说明。 ### SolrCloud 安装步骤 1. **解压和部署**:首先,你需要解压缩 Solr 的发布包,例如 `solr-4.4.0`,然后将 `solr.war` 文件复制到 Tomcat 的 `webapps` 目录下。...

    solr压力测试报告

    - **并发编程**:合理设计线程池参数,避免资源浪费的同时提高系统的并发处理能力。 - **性能优化**:通过禁用Solr查询缓存和文档插入缓存来模拟最坏情况下的性能表现,从而更准确地评估系统极限。 - **资源监控**:...

    solr in action

    - **故障恢复**:说明在Solr Cloud环境中如何实现高可用性和容错能力。 #### 与相关技术集成 - **集成框架**:讨论如何将Solr与各种开发框架(如Spring)集成。 - **第三方服务**:探索与其他数据处理服务(如...

    match-query-parser,在solr中使用不同的查询时间分析器搜索单个字段.zip

    在`match-query-parser-master`这个压缩包中,很可能包含了`match-query-parser`的源代码、配置示例以及如何在Solr中集成和使用的说明。通过查看源码,你可以了解其内部工作原理,包括如何处理查询字符串,以及它是...

    solr4.8.1 for linux

    以下是对 Solr 4.8.1 在 CentOS 上安装和使用的关键知识点的详细说明: 1. **Apache Solr**:Solr 是一个基于 Lucene 的全文搜索服务器,提供了分布式、可伸缩性和高可用性,支持多种数据源,如 XML、CSV 和 JSON。...

    Solr3.5开发应用指导

    - **1.3.2 搜索**:用户通过发送查询请求到Solr服务器,服务器会根据请求中的关键字和其他参数,在索引中查找相关文档,并返回最相关的文档列表。 **1.4 源码结构** - **1.4.1 目录结构说明**:Solr的核心源码主要...

    solr文件下载即用

    - 这个文本文件可能是Solr的配置说明或者使用指南,包含关于如何设置和使用Solr的详细步骤。 - 可能包含特定的配置参数、启动指令,或者是开发者提供的联系方式15290810931@163.com,以便在遇到问题时寻求帮助。 ...

    solr 企业搜索引擎教程

    - **solrconfig.xml**:配置Solr的行为参数,如缓存策略、查询处理器等。 #### 11. Solr 的应用示例 - **索引设计**:定义文档结构和字段属性。 - **构建索引**:通过API或命令行工具向Solr发送数据以创建索引。 -...

    solr4.4.0入门配置步骤

    如果页面没有异常,说明Solr已经安装并配置成功。 上述步骤是基于最基础的环境进行Solr4.4.0的入门配置。在实际应用中,可能还需要根据具体需求进行进一步的配置优化,例如调整内存设置、修改默认的搜索参数等。...

Global site tag (gtag.js) - Google Analytics