我試圖添加一個新的列到現有的搜索索引,但它是拋出一個錯誤,錯誤如下所述: - 字段docname存在0次;預期1 java.lang.IllegalArgumentException:字段docname存在0次;預計1有人可以幫我添加一個新的列在谷歌雲搜索索引使用Java
我可以看到新列已添加到搜索索引但無法檢索索引。
通過我的觀察,我可以看到索引中的現有記錄沒有新的列數據,因此它給出了這個錯誤,但是新記錄將具有這個列值。誰能幫我這個。
我試圖添加一個新的列到現有的搜索索引,但它是拋出一個錯誤,錯誤如下所述: - 字段docname存在0次;預期1 java.lang.IllegalArgumentException:字段docname存在0次;預計1有人可以幫我添加一個新的列在谷歌雲搜索索引使用Java
我可以看到新列已添加到搜索索引但無法檢索索引。
通過我的觀察,我可以看到索引中的現有記錄沒有新的列數據,因此它給出了這個錯誤,但是新記錄將具有這個列值。誰能幫我這個。
今天自己有這個問題,我在文檔中搜索了一下。這是一個相當令人沮喪的錯誤,因爲它並沒有真正指出問題出在我的代碼中。
看來,當你在一個Document
使用getOnlyField("something")
(在這種情況下,從一個搜索查詢返回的一處),如果該字段實際上不特定文件中存在但它拋出java.lang.IllegalArgumentException
。
因爲這往往是當你更新與新列的索引的情況下,我使用的是這樣的事情來解決它:
public static Long getNumberField(ScoredDocument d, String name, Long defaultValue) {
try {
return d.getOnlyField(name).getNumber().longValue();
} catch (IllegalArgumentException e) {
return defaultValue;
}
}
這就是所謂的搜索結果代碼:
Long numberValue = SearchUtils.getNumberField(scoredDocument, "featuredOrder", -1L)
這使我能夠捕獲該錯誤並在不存在時返回默認值。