我们正在使用Sphinx 2.0.1-beta,并希望使用PHP-API更新MVA-Attributes。 在方法调用之后出现此错误,但是当我使用命令行工具验证索引更新成功时,我只是收到此错误消息:
“搜索错误:加载持久性MVA值时,池内存不足。”
因此更新无法按预期工作。
mva_updates_pool = 128M
当我们使用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,$ values,true);
方法调用返回'3'(成功时更新文档的数量(0或更多),失败时返回-1)。
有人知道为什么会出现这种错误吗?
答案 0 :(得分:0)
错误消息显示有许多更新的MVA属性,并且您的MVA池内存耗尽。