您的位置:首页 > 其它

solr查询参数详解

2018-01-31 18:04 134 查看

普通查询参数

q – 查询字符串,必须的。Solr 中用来搜索的查询。有关该语法的完整描述,请参阅 参考资料 中的 “Lucene QueryParser Syntax”。可以通过追加一个分号和已索引且未进行断词的字段的名称来包含排序信息。默认的排序是 score desc,指按记分降序排序。 q=myField:Java AND otherField:developerWorks; date asc此查询搜索指定的两个字段并根据一个日期字段对结果进行排序。

start – 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。

rows – 指定返回结果最多有多少条记录,配合start来实现分页。

sort – 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。

wt – (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr 1.3增加的,要用通知我们,因为默认没有打开。

fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,

fl- field作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。“score” 指还应返回记分。例如 *,score

将返回所有字段及得分。用solrj的bean时,得在query中指定 query.set("fl", "*,score");

q.op – 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定

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

disMax查询参数

q.alt:  调用标准查询解析器并定义q参数为空时候的输入字符串

qf:   查询字段,具体到哪些字段,如果缺省默认为df。例如:qf="fieldOne^2.3 fieldTwo fieldThree^0.4"

mm: 查询最小应该匹配:mm没有定义则在solrconfig.xml中默认指定,默认为100%表示全匹配;mm为正整数指定最小匹配数量;mm为负整数指定匹配最小值减去该值;mm为百分比指定返回该相似性的所有结果;mm为负数百分比,则指定这部分可以忽略;mm为表达式如:3<90%表示:1-3是都需要的,4-是90%需要的

 pf  : phrase fields,使用同qf,主要用于增加匹配文档得分,用于区分相近的查询结果

 ps:  phrase slop,目的是获取确定的短语,ps是pf参数。ps影响增强,如果你用ps值,numFound和结果集不改变。但结果集的顺序改变。

 qs:  Query Phrase Slop: specifies the number of positions two terms can be apart in order to match the specified phrase. Used specifically with the qf parameter.

 tie:  默认为0.0的浮点数<1;tie的取值是0-1,默认是0,在实践中设置为0.1效果最好

 bq:  boost query  扩展的q参数

 bf :  boost function  例如:recip(rord(myfield),1,2,3)^1.5

uf:指定允许最终用户明确查询的架构字段。该参数支持通配符。默认是允许所有的字段,相当于uf=*。只允许标题字段使用uf=title。要允许标题和以'_s' 结尾的所有字段,请使用uf=title,*_s。要允许除标题以外的所有字段,请使用uf=*,-title。要禁止所有派出的搜索,请使用uf=-*。

pf2:带有可选权重的字段的多值列表。类似于pf,但是基于一对单词 shingles。

ps2:这类似于ps但是覆盖了用于pf2的 slop 因子。如果未指定,则使用ps。

pf3:一个多值字段列表,带有可选的权重,基于单词组的三联体。类似pf,不同之处在于它不是在每个字段中使用输入中的所有单词构建一个短语,而是它会为每个字段生成单词 “shingles”的三联体。

ps3:类似于ps但是覆盖了用于pf3的坡度因子。如果未指定,则使用ps。

boost:分析为查询的字符串的多值列表,并将其分数乘以所有匹配文档的主查询的分数。此参数是使用 BoostQParserPlugin 来包装 eDisMax 生成的查询的简写。

stopwords:一个布尔参数,指示StopFilterFactory在解析查询时是否应该遵守查询分析器中的配置。如果设置为false,那么StopFilterFactory在查询分析器中被忽略。

lowercaseOperators:指示是否将小写“and”和“or”当作与运算符“AND”和“OR”相同的布尔型参数。默认为false。

高亮功能

高亮功能,一直是全文检索框架必备的一个功能,大大提高了用户界面的友好性

hl:指定是否使用高亮

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

hl.simple.pre和hl.simple.post:指定高亮时显示的格式,默认是<em></em>,例如可以设置成hl.simple.pre为<font color="red">,hl.simple.post为</font>

hl.requireFieldMatch: 

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

hl.usePhraseHighlighter: 

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

hl.highlightMultiTerm 
如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。

导航分组查询

 在搜索中,我们搜索时,通常会自动返回一些相关的搜索。比如,你搜索了一本书,会自动返回作者信息加上他的其它书籍的数量。这种功能在Solr中称之为Facet。不太好翻译。下面对于参数的说明,我以搜索“手机”为例子,比较好说明一点。其中一些属性可能并不适用于中文。我的说明仅仅是举个例子。搜索"手机"时,可能会返回的 facet 结果:

品牌 (20),类型(2),颜色(10)

说明:品牌,类型,颜色就是所说的facet,后面括号里表示数量。品牌(20):有20个品牌。 类型(2):表示有2种类型(智能机和老人机)

facet 为TRUE时,启用该功能

facet.query 默认情况下,Solr会自动Facet的field并返回其相关的计数结果 。指定Lucene语法的查询语句,可以覆盖默认行为。

facet.field 指定作为facet的field。比如“品牌”

facet.prefix 以此值为前辍的terms才会作为Facet

facet.contains 字符串包含此值的terms才会作为Facet

facet.contains.ignoreCase 匹配 facet.contains 条件时,忽略大小写

facet.sort 指示Facet结果如何排序。有两个值:1. count -- facet记录数多的排前面 2. index -- 按索引中的次序

facet.limit 限制返回的facet的数量。默认100. 为负数时表示不做限制。e.g. 设置为2的话,只返回品牌、类型和颜色中的2种。

facet.offset 默认0. 一般用于分页时,忽略前面多少个

facet.minCount 设置最小的数量。例如:设置为3时,“类型”将会被抛弃

facet.missing 默认值false. 

facet.method facet的算法。三个可选值:enum, fc(默认值),fcs

facet.exists 用于facet.method=enum的情况

facet.excludeTerms 排除某些terms

facet.threads 获得facet的计算的线程数

经纬度查询

对带经纬度的数据进行检索

pt:坐标点,如pt=54.729696 -98.525391

d:搜索半径,如 d=10表示10km范围内
sfield:指定坐标索引字段,如sfield=geo

搜索建议

spellcheck 为true时,表示开启拼写检查

spellcheck.q 通常是搜索框输入的内容

spellcheck.build 为true时,将会创建用于spellcheck所需要的字典。通常不要在每次请求都指定此值为true

spellcheck.collate 为true时,将会根据最佳的建议重新构建一个查询语句。注意:仅返回重新构建的查询语句,并没有真正用它去查询

spellcheck.maxCollations 默认值是1. 指定返回最大较正后的查询语句数

spellcheck.maxCollationTries 默认值是0. 较低的值具有较好的性能,但是有可能没有较正结果。较高的值不容易出现找不到较正结果的情况

spellcheck.maxCollationEvaluations 默认值是10000。指定最大的较正组合。当用户输入的错误单词较多时,可能有很多种较正后的组合。

spellcheck.collateExtendedResults 默认值是false。为true时,返回扩展的详细的较正结果

spellcheck.collateMaxCollectDocs 测试可能的较正结果时,选取的最大document数量。默认值是0. 表示所有的document都需要检查。

spellcheck.collateParam.* 指定 param=value 对,(不是很明白有什么用)

spellcheck.count 返回的正确的拼写结果的条数

spellcheck.dictionary 指定拼写检查的字典

spellcheck.extendedResults 在拼定检查结果中附加一些额外的信息

spellcheck.onlyMorePopular 为true时,将会返回命中结果比当前查询语句命中结果更多的语句。

spellcheck.maxResultsForSuggest 如果设置为5,当用户的输入的查询只返回5条或更少的记录,spellchecker将会报告"correctlySpelled=false",并提供建议项。设置一个大于0的值,有助于提供 "你要搜的是不是:XXX" 这样的功能。

spellcheck.alternativeTermCount 为每个分词返回的存在于索引或字典中的建议的分词的数目

spellcheck.reload 重新加载spellchecker

spellcheck.accuracy 精确度。用于判断某个结果是否算作一个较正项

spellcheck.<DICT_NAME>.key spellcheck.myDict.myKey=myValue 貌似是用这里的key,value去替代字典中的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: