日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Solr搜索的排序打分规则探讨

發(fā)布時間:2025/4/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr搜索的排序打分规则探讨 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構師?>>> ??

http://www.colorfuldays.org/program/solr/solr_edismax_boost/

使用Solr搭建搜索引擎很容易,但是如何制定合理的打分規(guī)則(boost)做排序卻是一個很頭痛的事情。Solr本身的排序打分規(guī)則是繼承自Lucene的文本相關度的打分即boost,這一套算法對于通用的提供全文檢索的服務來講,已經(jīng)夠用了,但是對于一些專門領域的搜索來講,文本相關度的打分是不合適的。
如何來定制適合自身業(yè)務的排序打分規(guī)則(boost)呢?經(jīng)過這段時間的思考與實踐,想到了如下三個方法

  • 1、定制Lucene的boost算法,加入自己希望的業(yè)務規(guī)則;

  • 2、使用Solr的edismax實現(xiàn)的方法,通過bf查詢配置來影響boost打分。

  • 3、在建索引的schema時設置一個字段做排序字段,通過它來影響文檔的總體boost打分。

上面每一種方法都有其優(yōu)劣,下面分析一下各自的優(yōu)劣。

  • 第一種方法技術難度要求較高,需要讀懂Lucene的boost打分算法,在代碼層做定制.

  • 第二種方式就簡單不少,不過因為受限于edismax提供的方法,所以有些局限性。

  • 第三種排序可完全消除文本相關性打分的影響,文本檢索匹配邏輯只負責打到匹配的項,排序由自定義字段處理。

下面結合最近使用Solr的實踐,著重介紹一下通過使用Solr的DisMaxQParserPlugin通過配置來制定結果文檔打分規(guī)則。
DisMaxQParserPlugin提供在針對文本boost打分上,支持搜索多個schema索引字段,并針對每一個字段設置不同的boost權限。
pf查詢 與 qf查詢
pf:?可提供對一條記錄的多個字段做匹配的功能
qf:?針對查詢的每個字段設置不同的boost權重打分,其設置的字段必須為在pf中配置的項。
可在solrconfig.xml中的browse中配置做如下配置:

<requestHandler name="/browse" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="pf">
name info title
</str>
<str name="qf">
name^1 info^0.8 title^0.6
</str>
</lst>
</requestHandler>?
上面一段的意思是,查詢name,info,title三個字段,每個字段的文本相關度打分分別為1,0.8,0.6。計算查詢出的每一條結果的權重方法如下:分別計算各字段的文本打分然后乘于配置的系統(tǒng),最后三者相加即為該結果的boost得分。

bf查詢
除去pf查詢,qf查詢之外,仍然希望索引記錄的其它字段能夠計入打分中,這時可以使用bf查詢。bf查詢支持一些數(shù)據(jù)函數(shù),這些函數(shù)可作用在索引記錄的字段上,多為時間,數(shù)值等字段。同樣bf也支持添加權重。下面是一個使用bf查詢配置的例子:
<requestHandler name="/browse" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="bf">
sum(recip(ms(NOW,created_time),3.16e-11,1,1),sqrt(log(max(sales,1))),sqrt(log(count)))^10
</str>
<str name="pf">
name info title
</str>
<str name="qf">
name^1 info^0.8 title^0.6
</str>
</lst>
</requestHandler>
其中sum,recip,ms,sqrt,log,max這些都是Solr提供的數(shù)學方法,支持的所有數(shù)學方法可在這里查找到:http://wiki.apache.org/solr/FunctionQuery
edismax相關資源:http://wiki.apache.org/solr/DisMaxQParserPlugin


轉載于:https://my.oschina.net/zmf/blog/344805

總結

以上是生活随笔為你收集整理的Solr搜索的排序打分规则探讨的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。