Solr函數(shù)查詢的使用

2018-11-23 15:12 更新

Solr 函數(shù)查詢使您能夠使用一個或多個數(shù)字字段的實際值生成相關(guān)性分?jǐn)?shù)。

Solr 函數(shù)查詢由 DisMax、Extended DisMax 和標(biāo)準(zhǔn)查詢解析器支持。

Solr 函數(shù)查詢使用函數(shù)。函數(shù)可以是常量(數(shù)字或字符串文字)、字段、另一個函數(shù)或參數(shù)替換參數(shù)。您可以使用這些函數(shù)來修改用戶結(jié)果的排名。這些可用于根據(jù)用戶的位置或其他計算來更改結(jié)果的排序。

使用函數(shù)查詢

函數(shù)必須表達(dá)為函數(shù)調(diào)用(例如,sum(a,b) 而不是簡單地 a+b)。

在 Solr 查詢中有幾種使用函數(shù)查詢的方法:

  • 通過一個明確的 QParser,期望函數(shù)參數(shù),例如 func 或 frange:
    q={!func}div(popularity,price)&fq={!frange l=1000}customer_ratings
  • 在一個 Sort 表達(dá)式中。例如:
    sort=div(popularity,price) desc, score desc
  • 將函數(shù)的結(jié)果作為偽字段(pseudo-fields)添加到查詢結(jié)果中的文檔。例如,對于:
    &fl=sum(x, y),id,a,b,c,score

    輸出將是:

    ...
    <str name="id">foo</str>
    <float name="sum(x,y)">40</float>
    <float name="score">0.343</float>
    ...
  • 用于顯式指定函數(shù)的參數(shù),如 EDisMax 查詢解析器的 boost 參數(shù)或 DisMax 查詢解析器 bf(boost 函數(shù))參數(shù)。(請注意,bf 參數(shù)實際上是用空格分隔的函數(shù)查詢列表,每個函數(shù)都有一個可選的提升函數(shù),確保在使用 bf 時,一定要消除單個函數(shù)查詢中的任何內(nèi)部空白)。例如:
    q=dismax&bf="ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3"
  • 在 lucene QParser 中用 _val_ 關(guān)鍵字在內(nèi)聯(lián)中引入一個函數(shù)查詢。例如:
    q=_val_:mynumericfield _val_:"recip(rord(myfield),1,2,3)"

建議只使用具有快速隨機(jī)訪問功能的函數(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號