真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Lucene 8.x中怎么利用FunctionScoreQuery 自定義文檔評分,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)建站"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)建站具備承接各種類型的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作項(xiàng)目的能力。經(jīng)過10年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。

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. 首先定義一個(gè)變量表:
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. 定義一個(gè)自定義排序的表達(dá)式:
String sort_method= "mysort($score,$recomm,$viewcount,$wordcount)";

HashMap 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 用來存放所有自定義函數(shù)對應(yīng)的 Java 方法,如下所示:

3. 定義一個(gè) mysort 方法,接受 double 參數(shù),返回 double 參數(shù)
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 實(shí)例。

你可以試試打印一下 query 看看,我這邊一個(gè)真實(shí)打印的結(jié)果如下:

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 自定義文檔評分了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁名稱:Lucene8.x中怎么利用FunctionScoreQuery自定義文檔評分
轉(zhuǎn)載來源:http://weahome.cn/article/jeceid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部