91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lucene 8.x中怎么利用FunctionScoreQuery 自定義文檔評分

發布時間:2021-08-06 15:21:45 來源:億速云 閱讀:289 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關Lucene 8.x中怎么利用FunctionScoreQuery 自定義文檔評分,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

0. 需要引用的類
import org.apache.lucene.expressions.Expression;
import org.apache.lucene.expressions.SimpleBindings;
import org.apache.lucene.expressions.js.JavascriptCompiler;
import org.apache.lucene.queries.function.FunctionScoreQuery;
import org.apache.lucene.queryparser.classic.ParseException;
1. 首先定義一個變量表:
SimpleBindings bindings = new SimpleBindings();
bindings.add("$score", DoubleValuesSource.SCORES);
bindings.add("$recomm", DoubleValuesSource.fromIntField("recomm"));
bindings.add("$viewcount", DoubleValuesSource.fromIntField("viewcount"));
bindings.add("$wordcount", DoubleValuesSource.fromIntField("wordcount"));
2. 定義一個自定義排序的表達式:
String sort_method= "mysort($score,$recomm,$viewcount,$wordcount)";

HashMap<String, Method> scoreMethods = new HashMap();
scoreMethods.put("mysort", getClass().getDeclaredMethod("mysort", double.class, double.class, double.class, double.class));
            
Expression expr = JavascriptCompiler.compile(sort_method, scoreMethods, getClassLoader());

注意這里的 scoreMethods 用來存放所有自定義函數對應的 Java 方法,如下所示:

3. 定義一個 mysort 方法,接受 double 參數,返回 double 參數
public double mysort(double score, double recomm, double viewcount, double wordcount) {
    if(score >= 40) {
        if(recomm > 0)
            score += 100;
        if(viewcount >= 1000)
            score += 100;
        if(wordcount >= 200)
            score += 20;
    }
    return score;
}
4. 接下來你就可以使用 FunctionScoreQuery 
FunctionScoreQuery query = new FunctionScoreQuery(oldQuery, expr.getDoubleValuesSource(bindings));

這里的 oldQuery 就是你原先用來做全文搜索的 Query 實例。

你可以試試打印一下 query 看看,我這邊一個真實打印的結果如下:

FunctionScoreQuery(+type:[2 TO 2] +fork:[0 TO 0] +(((+name:j2cache)^20.0 (+description:j2cache)^10.0 (+detail:j2cache)^1.0 (+tags:j2cache)^10.0 (+catalogs:j2cache)^10.0 (+owner.name:j2cache)^2.0)~1), scored by expr(repo_sort($score,$recomm,$stars,$gindex)))

上述就是小編為大家分享的Lucene 8.x中怎么利用FunctionScoreQuery 自定義文檔評分了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尼木县| 呈贡县| 塔河县| 贡嘎县| 涿鹿县| 贵溪市| 博乐市| 宁津县| 德格县| 乳源| 抚顺县| 临沂市| 施秉县| 称多县| 胶南市| 永平县| 宁南县| 象州县| 石嘴山市| 明星| 任丘市| 望谟县| 中江县| 祥云县| 当雄县| 定州市| 禄劝| 茂名市| 纳雍县| 平顶山市| 绵竹市| 乐安县| 四子王旗| 伊金霍洛旗| 板桥市| 资兴市| 英吉沙县| 济源市| 普定县| 安平县| 古田县|