簡體   English   中英

在Groovy中緩存變量

[英]Cache a variable in groovy

當我嘗試在腳本末尾訪問len變量時,出現以下錯誤:“無法重復兩次!如果要重復一次,請顯式添加_CACHE。”

我該如何解決?

def src_str = query_string
def src_arr = src_str.split(' ')

def trg_arr = doc['my_index'].values

trg_arr_sorted = [:]

trg_arr.each {
_index['my_index'].get(it, _POSITIONS).each { pos ->
    trg_arr_sorted[pos.position] = it
    }
}

src_len = src_arr.length
def trg_len = trg_arr_sorted.size()

int[][] matrix = new int[src_len + 1][trg_len + 1]

(src_len + 1).times { matrix[it][0] = it }
(trg_len + 1).times { matrix[0][it] = it }

(1..src_len).each { i -> 
(1..trg_len).each { j ->
    matrix[i][j] = [matrix[i-1][j] + 1, matrix[i][j-1] + 1,
        src_arr[i-1] == trg_arr_sorted[j-1] ? matrix[i-1][j-1] : matrix[i-1][j-1] + 1].min()
    }
}

return 100 - (100 * matrix[src_len][trg_len] / max(src_len, trg_len)) // over here !!!

該代碼使用以單詞計算的levenshtein距離來計算分數。 除了最后一行的得分外,它的工作原理非常完美。

好的問題解決了。

我必須明確聲明緩存和位置:

_index['lang'].get(it, _POSITIONS | _CACHE)

錯誤不在最后一行,但我認為是。 我更改了腳本以對其進行調試,但是elasticsearch不會立即重新加載新的scipt。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM