solr:关于dismax的使用状况

首先说说 dismax这个功能,它是基于lucene的DisjunctionMaxQuery去 扩展的,就是说,实际上用到的就是DisjunctionMaxQuery的这个查询类。查询api,能够知道是 对查询的几个域中,取最大的打分,而不是想boolean查询那样,要几个域的查询的分数叠加。 apache



一、
q.alt, 没有看明白 api

二、qf对默认查询增长权重比值,好比:fieldOne^1.9 fieldTwo fieldThree^5 ,值越大权重越大 函数

也能够是   spa

一、bf内字段必须是索引的,该出填写的是查询函数   。提供一个强大的功能就是使用用户设置的公式来对文档的score进行计算。这里所说的公式也就是solr的function queries,使用bf参数来操做score。edismax支持boost参数来进行function query。可使用bf或boost屡次。bf的函数查看solr api文档http://wiki.apache.org/solr/FunctionQuery 排序

最终的排序打分,能够根据 bf打分与 lucene的sorce 相加,获得最后打分 索引

二、qf 文档


三、mm ,
 mm=2 就是有两个符合搜索的词 就返回改条 .对应着lucene的类BooleanScorer2
get


eg:
it

性别:女  MUST
年龄:<25  SHOULD
胸围: >C should
收入: >10000 should
io

要符合两个条件才会被 hit,要不直接去掉


四、pf查询字段, 就是phrase fields的缩写, 这样在schema不用制定默认字段

五、ps,phrase slop, 坡度 ,相同于 编辑距离的值,

eg: document:"周杰伦“,query:”杰伦周“,这两个词,若是用 phrasequery,但 slop=2的时候,搜索不出来,当,slop=3的时候,能够搜索出来

六、qs

七、


八、tie:DisjunctionMaxQuery q = new DisjunctionMaxQuery(tie);

 这个查询是至关于布尔查询的 
不过里面的关系只能是should 
最后的分数不是相加,而是取最大值 

九、bq,就是boost queries ,bq参数能够用来指定多个查询,相似于automatic phrase boost

当是多个查询的时候,就是 BooleanClause.Occur.SHOULD查询,只有仅有一个查询而且

 if (1.0f == f.getBoost() && f instanceof BooleanQuery)  的时候,才是保留着原先的查询。

具体见:DisMaxQParser

十、uf





随便说一下 各个Query的不一样作法

一、TermQuery,只是简单的按term 去查询?

二、BooleanQuery,布尔查询 ,与或?

三、RangeQuery

四、PrefixQuery就是使用前缀来进行查找的。

五、多关键字的搜索—PhraseQuery

六、FuzzyQuery是一种模糊查询,它能够简单地识别两个相近的词语。

七、使用通配符搜索—WildcardQuery


八、DisjunctionMaxQuery

相关文章
相关标签/搜索