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

相關文章
相關標籤/搜索