全部產品
Search
文件中心

OpenSearch:OpsDoc

更新時間:Jul 13, 2024

簡介

在算分過程中,經常會根據文檔中欄位的內容給予文檔不同的分數,從而控制整個排序結果。OpsDoc類封裝了一些文檔操作介面,通過這些介面使用者可以擷取文檔中的欄位。需要注意的是,通過OpsDoc對象擷取的欄位,必須是出現在控制台上屬性欄位列表中的欄位,並且需要在排序外掛程式init函數中調用OpsDoc的requireAttribute函數提前聲明。OpsDoc對象由系統自動建立,使用者可以直接使用。

不同於運算式排序,使用cava編寫排序指令碼需要使用者自己輸出trace。OpsDoc封裝了一系列trace函數支援使用者輸出各種類型的trace。目前OpsDoc的trace還不支援可變參數,如果使用者有多個變數需要輸出,需要多次調用trace介面。trace僅支援在搜尋測試頁面進行查看,正常的查詢流量不支援trace功能。需要注意的是,由於cava單請求運行記憶體又限制,過多的trace會佔用大量的運行時記憶體,所以請使用者僅在必要的時候調用trace函數。

函數列表

函數原型

函數簡介

boolean requireAttribute(CString fieldName)

聲明需要在算分過程中需要使用的欄位

long docFieldLong(CString fieldName)

擷取INT類型欄位

float docFieldFloat(CString fieldName)

擷取FLOAT類型欄位

double docFieldDouble(CString fieldName)

擷取DOUBLE類型欄位

CString docFieldLiteral(CString fieldName)

擷取LITERAL類型欄位

long[] docFieldLongArray(CString fieldName)

擷取INT_ARRAY類型欄位

float[] docFieldFloatArray(CString fieldName)

擷取FLOAT_ARRAY類型欄位

double[] docFieldDoubleArray(CString fieldName)

擷取DOUBLE_ARRAY類型欄位

CString[] docFieldLiteralArray(CString fieldName)

擷取LITERAL_ARRAY類型欄位

OpsGeoPoint docFieldGeoPoint(CString fieldName)

擷取GEO_POINT類型欄位

OpsTimestamp docFieldTimestamp(CString fieldName)

擷取TIMESTAMP類型欄位

boolean declareLongVariable(CString variableName, boolean needSerialize)

聲明一個long類型變數,該變數可以在後續算分外掛程式中使用,或者在文檔中返回

boolean declareDoubleVariable(CString variableName, boolean needSerialize)

聲明一個double類型變數,該變數可以在後續算分外掛程式中使用,或者在文檔中返回

void setLongVariable(CString variableName, long value)

設定變數的值,變數必須在之前聲明過

void setDoubleVariable(CString variableName, double value)

設定變數的值,變數必須在之前聲明過

long getLongVariable(CString variableName)

擷取long類型的變數的值,變數必須在之前設定過

double getDoubleVariable(CString variableName)

擷取double變數的值,變數必須在之前設定過

void trace(byte value)

在算分過程中輸出trace資訊,內容為byte類型

void trace(CString prefix, byte value)

在算分過程中輸出trace資訊,內容為byte類型

void trace(short value)

在算分過程中輸出trace資訊,內容為short類型

void trace(CString prefix, short value)

在算分過程中輸出trace資訊,內容為short類型

void trace(int value)

在算分過程中輸出trace資訊,內容為int類型

void trace(CString prefix, int value)

在算分過程中輸出trace資訊,內容為int類型

void trace(long value)

在算分過程中輸出trace資訊,內容為long類型

void trace(CString prefix, long value)

在算分過程中輸出trace資訊,內容為long類型

void trace(float value)

在算分過程中輸出trace資訊,內容為float類型

void trace(CString prefix, float value)

在算分過程中輸出trace資訊,內容為float類型

void trace(double value)

在算分過程中輸出trace資訊,內容為double類型

void trace(CString prefix, double value)

在算分過程中輸出trace資訊,內容為double類型

void trace(CString value)

在算分過程中輸出trace資訊,內容為CString類型

void trace(CString prefix, CString value)

在算分過程中輸出trace資訊,內容為CString類型

函數詳情

boolean requireAttribute(CString fieldName)

聲明算分過程中需要使用的屬性欄位,該函數只能在scorer init階段調用。如果欄位沒有在init階段聲明,在算分過程中無法正確的從文檔中取出欄位的值。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:聲明成功返回true,否則返回false。返回false的主要原因是聲明的欄位不是屬性欄位。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        CString field1;
        boolean ret = params.getDoc().requireAttribute(field1); //field1 必須是常量
        ret = params.getDoc().requireAttribute("price"); //ok
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        float floatValue = doc.docFieldFloat("price");
        return floatValue;
    }
}

long docFieldLong(CString fieldName)

擷取INT類型欄位的值,傳回值為長整型。如果欄位為FLOAT或者DOUBLE類型,傳回值會對欄位取整。如果欄位為LITERAL或者ARRAY類型,返回0。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("count"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        long count = doc.docFieldLong("count");
        return (double)count;
    }
}

float docFieldFloat(CString fieldName)

擷取FLOAT類型欄位的值,傳回值為浮點型。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("count"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        float count = doc.docFieldFloat("count");
        return (double)count;
    }
}

double docFieldDouble(CString fieldName)

擷取DOUBLE類型欄位的值,傳回值為雙精確度浮點型。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("count"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        double count = doc.docFieldDouble("count");
        return count;
    }
}

CString docFieldLiteral(CString fieldName)

擷取LITERAL類型欄位的值,傳回值為CString。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("tag"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        CString tag = doc.docFieldLiteral("tag");
        if (tag.equals("abc")) {
            return 100.0;
        }
        return 0;
    }
}

long[] docFieldLongArray(CString fieldName)

擷取INT_ARRAY類型欄位的值。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值,如果欄位不存在或者類型不符(欄位類型無法轉換或者欄位不是數群組類型)返回null。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("tags"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        long[] tags = doc.docFieldLongArray("tags");
        if (tags != null) {
            if (tags.length > 0) {
                return (double)tags[0];
            }
        }
        return 0;
    }
}

float[] docFieldFloatArray(CString fieldName)

擷取FLOAT_ARRAY類型欄位的值。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值,如果欄位不存在或者類型(欄位類型無法轉換或者欄位不是數群組類型)不匹配返回null。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("tags"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        float[] tags = doc.docFieldFloatArray("tags");
        if (tags != null) {
            if (tags.length > 0) {
                return (double)tags[0];
            }
        }
        return 0;
    }
}

double[] docFieldDoubleArray(CString fieldName)

擷取DOUBLE_ARRAY類型欄位的值。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值,如果欄位不存在或者類型不符(欄位類型無法轉換或者欄位不是數群組類型)返回null。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("tags"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        double[] tags = doc.docFieldDoubleArray("tags");
        if (tags != null) {
            if (tags.length > 0) {
                return (double)tags[0];
            }
        }
        return 0;
    }
}

CString[] docFieldLiteralArray(CString fieldName)

擷取LITERAL_ARRAY類型欄位的值。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值,如果欄位不存在或者類型不符(欄位類型無法轉換或者欄位不是數群組類型)返回null。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("tags"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        CString[] tags = doc.docFieldLiteralArray("tags");
        if (tags != null) {
            if (tags.length > 0 && tags[0].equals("abc")) {
                return 100.0;
            }
        }
        return 0;
    }
}

OpsGeoPoint docFieldGeoPoint(CString fieldName)

擷取GEO_POINT類型欄位的值,需要顯示引用OpsGeoPoint。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值,如果欄位不存在或者類型不符返回null。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsGeoPoint;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("location"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        OpsGeoPoint location = doc.docFieldGeoPoint("location");
        double longitude = location.getLongitude();
        if (longitude < 0 || longitude > 180.0) {
            return 0;
        }
        return 1.0;
    }
}

OpsTimestamp docFieldTimestamp(CString fieldName)

擷取TIMESTAMP類型欄位的值,需要顯示引用OpsTimestamp。參數列表:fieldName — 屬性欄位名稱,必須是常量。傳回值:返回欄位的值,如果欄位不存在或者類型不符返回null。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsTimestamp;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        boolean ret = params.getDoc().requireAttribute("timestamp"); 
          return ret;
    }
    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        OpsTimestamp timestamp = doc.docFieldTimestamp("timestamp");
        return (double)timestamp.getValue();
    }
}

boolean declareLongVariable(CString variableName, boolean needSerialize)

聲明long類型的變數,主要用於多個外掛程式傳遞資訊或者在結果中返回變數的值,該函數只能在scorer初始化階段調用,在一個外掛程式中最多隻能聲明30個變數,超過限制會返回錯誤。

參數列表:

variableName -- 變數名稱,必須是常量

needSerialize -- 是否需要在文檔中返回,true/false,必須是常量

傳回值:

成功返回true,否則返回false。

程式碼範例

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsGeoPoint;
import com.aliyun.opensearch.cava.framework.OpsTimestamp;

class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return params.getDoc().declareLongVariable("v_int64", true);
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        doc.setLongVariable("v_int64", 100);
        
        long longValue = doc.getLongVariable("v_int64");
        doc.trace("long value1: ", longValue);
        return 0;
    }
}

boolean declareDoubleVariable(CString variableName, boolean needSerialize)

聲明double類型的變數,主要用於多個外掛程式傳遞資訊或者在結果中返回變數的值,該函數只能在scorer初始化階段調用,在一個外掛程式中最多隻能聲明30個變數,超過限制會返回錯誤。

參數列表:

variableName -- 變數名稱,必須是常量

needSerialize -- 是否需要在文檔中返回,true/false,必須是常量

傳回值:

成功返回true,否則返回false。

程式碼範例

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsRequest;
import com.aliyun.opensearch.cava.framework.OpsDoc;
import com.aliyun.opensearch.cava.framework.OpsGeoPoint;
import com.aliyun.opensearch.cava.framework.OpsTimestamp;

class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return params.getDoc().declareDoubleVariable("v_double", true);
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        doc.setDoubleVariable("v_double", 100);
        
        long doubleValue = doc.getDoubleVariable("v_double");
        doc.trace("double value1: ", doubleValue);
        return 0;
    }
}

void setLongVariable(CString variableName, long value)

設定long類型變數的值,該函數必須在算分階段進行調用,而且變數需要在初始化階段進行聲明。

參數列表:

variableName -- 變數名稱

value -- 變數的值

void setDoubleVariable(CString variableName, long value)

設定double類型變數的值,該函數必須在算分階段進行調用,而且變數需要在初始化階段進行聲明。

參數列表:

variableName -- 變數名稱

value -- 變數的值

long getLongVariable(CString variableName)

返回long類型變數的值,該函數必須在算分階段進行調用,而且變數需要在初始化階段進行聲明。

參數列表:

variableName -- 變數名稱

傳回值:

返回變數的值,如果變數沒有聲明或者未提前設值,預設返回0。

double getDoubleVariable(CString variableName)

返回double類型變數的值,該函數必須在算分階段進行調用,而且變數需要在初始化階段進行聲明。如果變數沒有聲明或者未提前設值,預設返回0。

參數列表:

variableName -- 變數名稱

傳回值:

返回變數的值,如果變數沒有聲明或者未提前設值,預設返回0。

void trace(byte value)

輸出byte類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           byte value = 1;
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, byte value)

輸出byte類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           byte value = 1;
        doc.trace("byte value: ", value);
        return 0.0;
    }
}

void trace(short value)

輸出short類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           short value = 1;
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, short value)

輸出short類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           short value = 1;
        doc.trace("short value: ", value);
        return 0.0;
    }
}

void trace(int value)

輸出int類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           int value = 1;
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, int value)

輸出int類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           int value = 1;
        doc.trace("int value: ", value);
        return 0.0;
    }
}

void trace(long value)

輸出long類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           long value = 1;
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, long value)

輸出long類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           long value = 1;
        doc.trace("long value: ", value);
        return 0.0;
    }
}

void trace(float value)

輸出float類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           float value = 1;
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, float value)

輸出float類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           float value = 1.0;
        doc.trace("float value: ", value);
        return 0.0;
    }
}

void trace(double value)

輸出double類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           double value = 1;
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, double value)

輸出double類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           double value = 1.0;
        doc.trace("double value: ", value);
        return 0.0;
    }
}

void trace(CString value)

輸出CString類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           CString value = "abc";
        doc.trace(value);
        return 0.0;
    }
}

void trace(CString prefix, CString value)

輸出CString類型的trace資訊,該資訊為文檔層級,只在搜尋測試時生效。參數列表:prefix — trace首碼,方便尋找。value — 需要輸出的內容。

程式碼範例:

package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.framework.OpsDoc;
class BasicSimilarityScorer {
    boolean init(OpsScorerInitParams params) {
        return true;
    }
    double score(OpsScoreParams params) {
           OpsDoc doc = params.getDoc();
           CString value = "abc";
        doc.trace("CString value: ", value);
        return 0.0;
    }
}