All Products
Search
Document Center

OpenSearch:OpsDoc

Last Updated:Apr 02, 2026

OpsDoc menyediakan utilitas akses bidang dokumen dan debugging untuk plug-in sort Cava. Selama perhitungan skor, gunakan instans OpsDoc untuk membaca nilai bidang atribut, berbagi data antar plug-in melalui variabel yang dideklarasikan, serta menghasilkan informasi jejak selama pengujian pencarian.

Sistem membuat instans OpsDoc secara otomatis — tidak diperlukan inisialisasi manual.

Konteks penilaian

Instans OpsDoc tersedia dalam dua fase plug-in sort:

FaseMetodeOperasi yang tersedia
Inisialisasiboolean init(OpsScorerInitParams params)requireAttribute, declareLongVariable, declareDoubleVariable
Perhitungan skordouble score(OpsScoreParams params)Semua docField*, setLongVariable, getLongVariable, setDoubleVariable, getDoubleVariable, trace

Akses OpsDoc melalui params.getDoc() pada kedua fase tersebut.

Penting

Bidang dan variabel yang dideklarasikan di init tersedia selama perhitungan skor. Melewatkan deklarasi berarti nilai bidang tidak dapat diambil dan getter variabel akan mengembalikan 0 secara default.

Fungsi

Deklarasi bidang

SignatureDeskripsi
boolean requireAttribute(CString fieldName)Mendeklarasikan bidang atribut untuk digunakan selama perhitungan skor. Panggil fungsi ini di init.

Akses bidang

Semua fungsi akses bidang harus dipanggil selama perhitungan skor (di metode score), setelah bidang terkait dideklarasikan dengan requireAttribute.

SignatureTipe bidangTipe PengembalianMengembalikan saat bidang tidak ada atau tipe tidak sesuai
long docFieldLong(CString fieldName)INTlong0 (FLOAT/DOUBLE: bilangan bulat terdekat; LITERAL/ARRAY: 0)
float docFieldFloat(CString fieldName)FLOATfloat—
double docFieldDouble(CString fieldName)DOUBLEdouble—
CString docFieldLiteral(CString fieldName)LITERALCString—
long[] docFieldLongArray(CString fieldName)INT_ARRAYlong[]null
float[] docFieldFloatArray(CString fieldName)FLOAT_ARRAYfloat[]null
double[] docFieldDoubleArray(CString fieldName)DOUBLE_ARRAYdouble[]null
CString[] docFieldLiteralArray(CString fieldName)LITERAL_ARRAYCString[]null
OpsGeoPoint docFieldGeoPoint(CString fieldName)GEO_POINTOpsGeoPointnull
OpsTimestamp docFieldTimestamp(CString fieldName)TIMESTAMPOpsTimestampnull

Variabel

Gunakan variabel untuk meneruskan data antar beberapa plug-in sort atau menyertakan nilai hasil komputasi dalam hasil pencarian.

SignatureDeskripsi
boolean declareLongVariable(CString variableName, boolean needSeraialize)Mendeklarasikan variabel LONG. Panggil fungsi ini di init. Maksimal 30 variabel per plug-in.
boolean declareDoubleVariable(CString variableName, boolean needSeraialize)Mendeklarasikan variabel DOUBLE. Panggil fungsi ini di init. Maksimal 30 variabel per plug-in.
void setLongVariable(CString variableName, long value)Menetapkan nilai variabel LONG yang telah dideklarasikan. Panggil fungsi ini selama perhitungan skor.
void setDoubleVariable(CString variableName, long value)Menetapkan nilai variabel DOUBLE yang telah dideklarasikan. Panggil fungsi ini selama perhitungan skor.
long getLongVariable(CString variableName)Mengembalikan nilai variabel LONG. Mengembalikan 0 jika tidak dideklarasikan atau belum ditetapkan.
double getDoubleVariable(CString variableName)Mengembalikan nilai variabel DOUBLE. Mengembalikan 0 jika tidak dideklarasikan atau belum ditetapkan.

Jejak

Catatan

Fungsi jejak hanya tersedia selama pengujian pencarian di halaman Search Test di konsol OpenSearch. Permintaan pencarian biasa tidak mendukung pelacakan. Karena Cava memproses setiap permintaan dalam memori waktu proses yang terbatas, penggunaan berlebihan fungsi jejak dapat menyebabkan tekanan memori — panggil fungsi jejak hanya saat debugging.

Untuk menampilkan beberapa variabel, panggil trace satu kali per variabel. Parameter yang diteruskan ke fungsi jejak tidak dapat diubah.

Setiap fungsi jejak memiliki dua bentuk overload: satu tanpa awalan dan satu dengan CString prefix yang memberi label output agar lebih mudah dipindai.

SignatureTipe yang dilacak
void trace(byte value)BYTE
void trace(CString prefix, byte value)BYTE
void trace(short value)SHORT
void trace(CString prefix, short value)SHORT
void trace(int value)INT
void trace(CString prefix, int value)INT
void trace(long value)LONG
void trace(CString prefix, long value)LONG
void trace(float value)FLOAT
void trace(CString prefix, float value)FLOAT
void trace(double value)DOUBLE
void trace(CString prefix, double value)DOUBLE
void trace(CString value)CString
void trace(CString prefix, CString value)CString

Detail fungsi

requireAttribute

boolean requireAttribute(CString fieldName)

Mendeklarasikan bidang atribut untuk digunakan selama perhitungan skor. Hanya bidang yang dikonfigurasi sebagai bidang atribut di konsol OpenSearch yang dapat dideklarasikan. Panggil fungsi ini di init; bidang yang tidak dideklarasikan selama inisialisasi tidak dapat dibaca di score.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Mengembalikan true jika bidang berhasil dideklarasikan. Mengembalikan false jika bidang tersebut bukan bidang atribut.

Contoh

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) {
        // Deklarasikan bidang atribut "price" sebelum score() dijalankan
        boolean ret = params.getDoc().requireAttribute("price");
        return ret;
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        float floatValue = doc.docFieldFloat("price");
        return floatValue;
    }
}

docFieldLong

long docFieldLong(CString fieldName)

Mengembalikan nilai bidang INT sebagai long. Jika bidang bertipe FLOAT atau DOUBLE, nilai kembali dibulatkan ke bilangan bulat terdekat. Jika bidang bertipe LITERAL atau ARRAY, dikembalikan 0.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai long.

Contoh

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 params.getDoc().requireAttribute("count");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        float count = doc.docFieldFloat("count");
        return (double)count;
    }
}

docFieldFloat

float docFieldFloat(CString fieldName)

Mengembalikan nilai bidang FLOAT sebagai bilangan titik mengambang.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai float.

Contoh

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 params.getDoc().requireAttribute("count");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        float count = doc.docFieldFloat("count");
        return (double)count;
    }
}

docFieldDouble

double docFieldDouble(CString fieldName)

Mengembalikan nilai bidang DOUBLE sebagai bilangan titik mengambang presisi ganda.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai double.

Contoh

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 params.getDoc().requireAttribute("count");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        double count = doc.docFieldDouble("count");
        return count;
    }
}

docFieldLiteral

CString docFieldLiteral(CString fieldName)

Mengembalikan nilai bidang LITERAL sebagai CString.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai CString.

Contoh

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 params.getDoc().requireAttribute("tag");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        CString tag = doc.docFieldLiteral("tag");
        if (tag.equals("abc")) {
            return 100.0;
        }
        return 0;
    }
}

docFieldLongArray

long[] docFieldLongArray(CString fieldName)

Mengembalikan nilai bidang INT_ARRAY sebagai long[]. Mengembalikan null jika bidang tidak ada, tidak dapat dikonversi ke tipe target, atau bukan bidang ARRAY.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai long[], atau null jika bidang tidak ada atau tidak kompatibel.

Contoh

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 params.getDoc().requireAttribute("tags");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        long[] tags = doc.docFieldLongArray("tags");
        // Selalu lakukan null-check pada bidang array sebelum mengakses elemennya
        if (tags != null) {
            if (tags.length > 0) {
                return (double)tags[0];
            }
        }
        return 0;
    }
}

docFieldFloatArray

float[] docFieldFloatArray(CString fieldName)

Mengembalikan nilai bidang FLOAT_ARRAY sebagai float[]. Mengembalikan null jika bidang tidak ada, tidak dapat dikonversi ke tipe target, atau bukan bidang ARRAY.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai float[], atau null jika bidang tidak ada atau tidak kompatibel.

Contoh

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 params.getDoc().requireAttribute("tags");
    }

    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;
    }
}

docFieldDoubleArray

double[] docFieldDoubleArray(CString fieldName)

Mengembalikan nilai bidang DOUBLE_ARRAY sebagai double[]. Mengembalikan null jika bidang tidak ada, tidak dapat dikonversi ke tipe target, atau bukan bidang ARRAY.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai double[], atau null jika bidang tidak ada atau tidak kompatibel.

Contoh

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 params.getDoc().requireAttribute("tags");
    }

    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;
    }
}

docFieldLiteralArray

CString[] docFieldLiteralArray(CString fieldName)

Mengembalikan nilai bidang LITERAL_ARRAY sebagai CString[]. Mengembalikan null jika bidang tidak ada, tidak dapat dikonversi ke tipe target, atau bukan bidang ARRAY.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai CString[], atau null jika bidang tidak ada atau tidak kompatibel.

Contoh

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 params.getDoc().requireAttribute("tags");
    }

    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;
    }
}

docFieldGeoPoint

OpsGeoPoint docFieldGeoPoint(CString fieldName)

Mengembalikan nilai bidang GEO_POINT sebagai OpsGeoPoint. Mengembalikan null jika bidang tidak ada atau tipe bidang tidak valid. Referensi objek OpsGeoPoint diperlukan untuk menggunakan fungsi ini.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai OpsGeoPoint, atau null jika bidang tidak ada atau tidak valid.

Contoh

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) {
        return params.getDoc().requireAttribute("location");
    }

    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;
    }
}

docFieldTimestamp

OpsTimestamp docFieldTimestamp(CString fieldName)

Mengembalikan nilai bidang TIMESTAMP sebagai OpsTimestamp. Mengembalikan null jika bidang tidak ada atau tipe bidang tidak valid. Referensi objek OpsTimestamp diperlukan untuk menggunakan fungsi ini.

Parameter

ParameterTipeDeskripsi
fieldNameCStringNama bidang atribut. Harus berupa konstanta.

Nilai kembali

Nilai bidang sebagai OpsTimestamp, atau null jika bidang tidak ada atau tidak valid.

Contoh

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) {
        return params.getDoc().requireAttribute("timestamp");
    }

    double score(OpsScoreParams params) {
        OpsDoc doc = params.getDoc();
        OpsTimestamp timestamp = doc.docFieldTimestamp("timestamp");
        return (double)timestamp.getValue();
    }
}

declareLongVariable

boolean declareLongVariable(CString variableName, boolean needSeraialize)

Mendeklarasikan variabel LONG untuk meneruskan data antar plug-in sort atau menyertakannya dalam hasil pencarian. Panggil fungsi ini di init. Setiap plug-in mendukung maksimal 30 variabel yang dideklarasikan — melebihi batas ini akan menghasilkan error.

Parameter

ParameterTipeDeskripsi
variableNameCStringNama variabel. Harus berupa konstanta.
needSeraializebooleanApakah variabel disertakan dalam dokumen hasil pencarian. Harus berupa konstanta. Nilai valid: true, false.

Nilai kembali

Mengembalikan true jika variabel berhasil dideklarasikan. Mengembalikan false jika tidak.

Contoh

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) {
        // Deklarasikan "v_int64" dan sertakan dalam dokumen hasil pencarian
        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;
    }
}

declareDoubleVariable

boolean declareDoubleVariable(CString variableName, boolean needSeraialize)

Mendeklarasikan variabel DOUBLE untuk meneruskan data antar plug-in sort atau menyertakannya dalam hasil pencarian. Panggil fungsi ini di init. Setiap plug-in mendukung maksimal 30 variabel yang dideklarasikan — melebihi batas ini akan menghasilkan error.

Parameter

ParameterTipeDeskripsi
variableNameCStringNama variabel. Harus berupa konstanta.
needSeraializebooleanApakah variabel disertakan dalam dokumen hasil pencarian. Harus berupa konstanta. Nilai valid: true, false.

Nilai kembali

Mengembalikan true jika variabel berhasil dideklarasikan. Mengembalikan false jika tidak.

Contoh

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 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;
    }
}

setLongVariable

void setLongVariable(CString variableName, long value)

Menetapkan nilai variabel LONG yang telah dideklarasikan. Panggil fungsi ini selama perhitungan skor. Variabel harus telah dideklarasikan di init.

Parameter

ParameterTipeDeskripsi
variableNameCStringNama variabel.
valuelongNilai yang akan ditetapkan.

setDoubleVariable

void setDoubleVariable(CString variableName, long value)

Menetapkan nilai variabel DOUBLE yang telah dideklarasikan. Panggil fungsi ini selama perhitungan skor. Variabel harus telah dideklarasikan di init.

Parameter

ParameterTipeDeskripsi
variableNameCStringNama variabel.
valuelongNilai yang akan ditetapkan.

getLongVariable

long getLongVariable(CString variableName)

Mengembalikan nilai variabel LONG yang telah dideklarasikan. Panggil fungsi ini selama perhitungan skor. Mengembalikan 0 jika variabel belum dideklarasikan atau nilainya belum ditetapkan.

Parameter

ParameterTipeDeskripsi
variableNameCStringNama variabel.

Nilai kembali

Nilai variabel sebagai long. Mengembalikan 0 jika variabel tidak dideklarasikan atau belum ditetapkan.

getDoubleVariable

double getDoubleVariable(CString variableName)

Mengembalikan nilai variabel DOUBLE yang telah dideklarasikan. Panggil fungsi ini selama perhitungan skor. Mengembalikan 0 jika variabel belum dideklarasikan atau nilainya belum ditetapkan.

Parameter

ParameterTipeDeskripsi
variableNameCStringNama variabel.

Nilai kembali

Nilai variabel sebagai double. Mengembalikan 0 jika variabel tidak dideklarasikan atau belum ditetapkan.

trace (tanpa awalan)

Semua overload trace di bawah ini menghasilkan nilai secara langsung, tanpa label.

void trace(byte value)
void trace(short value)
void trace(int value)
void trace(long value)
void trace(float value)
void trace(double value)
void trace(CString value)

Parameter

ParameterTipeDeskripsi
valueBervariasiNilai yang akan ditampilkan dalam output jejak.

Contoh (BYTE)

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;
    }
}

trace (dengan awalan)

Semua overload trace di bawah ini menghasilkan nilai berlabel, sehingga lebih mudah menemukan variabel tertentu dalam output jejak.

void trace(CString prefix, byte value)
void trace(CString prefix, short value)
void trace(CString prefix, int value)
void trace(CString prefix, long value)
void trace(CString prefix, float value)
void trace(CString prefix, double value)
void trace(CString prefix, CString value)

Parameter

ParameterTipeDeskripsi
prefixCStringLabel yang ditempatkan di awal output jejak. Membantu menemukan variabel selama pengujian pencarian.
valueBervariasiNilai yang akan ditampilkan.

Contoh (DOUBLE dengan awalan)

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;
    }
}

Error umum

requireAttribute mengembalikan false

requireAttribute mengembalikan false ketika bidang yang ditentukan tidak dikonfigurasi sebagai bidang atribut di konsol OpenSearch. Pastikan bidang tersebut tercantum di bawah Attribute Fields di konsol sebelum mendeklarasikannya di init.

Akses bidang array mengembalikan null

docFieldLongArray, docFieldFloatArray, docFieldDoubleArray, dan docFieldLiteralArray mengembalikan null ketika:

  • Bidang tidak ada dalam dokumen.

  • Tipe bidang tidak sesuai (misalnya, memanggil docFieldLongArray pada bidang FLOAT_ARRAY).

  • Bidang bukan tipe ARRAY.

Selalu lakukan null-check terhadap nilai kembali sebelum mengakses elemen array atau memanggil .length.

getLongVariable atau getDoubleVariable mengembalikan 0 secara tidak terduga

Kedua getter mengembalikan 0 ketika variabel belum dideklarasikan di init atau ketika setLongVariable/setDoubleVariable belum dipanggil sebelum getter. Pastikan bahwa:

  1. Variabel dideklarasikan di init menggunakan declareLongVariable atau declareDoubleVariable.

  2. Setter dipanggil di score sebelum getter.

Jika Anda menggunakan nilai variabel dalam operasi pembagian atau logika kondisional, pastikan nilainya bukan nol sebelum melakukan operasi tersebut.

Deklarasi variabel mengembalikan false atau memicu error

Setiap plug-in mendukung maksimal 30 variabel yang dideklarasikan untuk tipe LONG dan DOUBLE secara gabungan. Melebihi batas ini akan menyebabkan error. Tinjau kembali deklarasi variabel di init dan hapus yang tidak digunakan.

Nilai bidang tidak dapat diambil selama score

Jika fungsi docField* mengembalikan nilai default yang tidak diharapkan (seperti 0 untuk tipe numerik), kemungkinan besar bidang tersebut tidak dideklarasikan di init melalui requireAttribute. Deklarasi bidang harus dilakukan sebelum perhitungan skor — menambahkan pemanggilan requireAttribute di score tidak berpengaruh.