我們正在使用Sphinx 2.0.1-beta並希望用PHP-API更新MVA-Attributes。 出現這個錯誤,但是當我使用命令行工具來驗證索引更新成功,我只是得到這個錯誤信息的方法調用後:如何使用PHP-API更新sphinx MVA屬性?
「搜索出錯:池內存上裝載持久MVA值「。
因此更新不能按預期方式工作。
- 在[searchd的] /usr/local/sphinx/etc/test.config的-section我們插入:
mva_updates_pool = 128M
- 然後我們實現了一個類更新sql_attr_uint值,它工作得很好。爲了使用MVA值,我們稍微擴展了這個類。
當我們調試我們與PHP-API文件代碼,
function UpdateAttributes ($index, $attrs, $values, $mva=false)
{
// verify everything
assert (is_string($index));
assert (is_bool($mva));
assert (is_array($attrs));
foreach ($attrs as $attr)
assert (is_string($attr));
assert (is_array($values));
foreach ($values as $id=>$entry)
{
assert (is_numeric($id));
assert (is_array($entry));
assert (count($entry)==count($attrs));
foreach ($entry as $v)
{
if ($mva)
{
assert (is_array($v));
foreach ($v as $vv)
assert (is_int($vv));
var_dump($vv);
} else
assert (is_int($v));
}
}
...
我們的if($ MVA)測試後獲得了$ VV值。
- 數據結構的一個例子,我們使用作爲參數的更新功能:
僞代碼:
$attrs:
array(1) {
[0]=>
string(12) "attributeKey"
}
$值:
array(2) {
[182371746]=>
array(1) {
[0]=>
array(2) {
[0]=>
int(1)
[1]=>
int(10)
}
}
[182371749]=>
array(1) {
[0]=>
array(2) {
[0]=>
int(2)
[1]=>
int(11)
}
}
}
方法調用: $ sphinxClient-> UpdateAttributes('destinationIndex',$ attrs,$ valu es,true);
方法調用返回'3'(成功更新文檔的數量(0或更多),失敗時返回-1)。
有人有任何想法爲什麼會發生此錯誤?
我給了一個答案,但後來看到它並沒有真正適用於你的問題 – Rafa