簡介
在算分過程中,經常會根據文檔中欄位的內容給予文檔不同的分數,從而控制整個排序結果。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;
}
}