PHP Solr 4.10 : SolrServerError "for input string : 10,00" addDocument with setBoost(10)
PHP Solr 4.10 : SolrServerError "for input string : 10,00" on addDocument with setBoost(10)
没有找到我的问题的答案。
我在 SolR 服务器 4.10.1 中使用 pecl SolR PHP。当我尝试添加带有提升集的文档时发生 SolrServerError。消息是:"For input string: "10,0"" 代码:500.
我做了以下代码:
//$boostDocument = 10.00;
$doc->setBoost($boostDocument);
foreach($data as $cle=>$valeur) {
if(is_array($valeur) == TRUE) {
foreach ($valeur as $val) {
$doc->addField($cle, $val);
}
} else {
$doc->addField($cle, $valeur);
}
}
try {
$this->solrClient->addDocument($doc, true);
} catch (SolrServerException $e) {
}
这是我尝试添加的结果文档:
array(3) {
["document_boost"]=>
float(10)
["field_count"]=>
int(3)
["fields"]=>
array(3) {
[0]=>
object(SolrDocumentField)#21 (3) {
["name"]=>
string(2) "id"
["boost"]=>
float(0)
["values"]=>
array(1) {
[0]=>
string(6) "752891"
}
}
[1]=>
object(SolrDocumentField)#22 (3) {
["name"]=>
string(4) "type"
["boost"]=>
float(0)
["values"]=>
array(1) {
[0]=>
string(3) "CAT"
}
}
[2]=>
object(SolrDocumentField)#23 (3) {
["name"]=>
string(11) "designation"
["boost"]=>
float(0)
["values"]=>
array(2) {
[0]=>
string(23) "Good guy designation"
[1]=>
string(0) ""
}
}
}
}
没有 $document->SetBoost(10.00)
不会发生错误。
这是由 PHP 中的语言环境设置引起的,因为某些语言环境使用“,”作为小数点分隔符(美式英语使用“.”),这会影响从浮点数到字符串的转换Solr 请求在模块内部生成。
在发出请求之前使用 setlocale(LC_NUMERIC, "C")
编译 PHP 时,您可以强制使用 C 的默认转换,或者可能(我还没有尝试过)将 boost 设置为字符串直接代替(setBoost("10.00") 或 setBoost(10)).
您可以使用setlocale(LC_NUMERIC, 0)
获取当前设置,这样您就可以在发出请求后将其重新设置。
没有找到我的问题的答案。
我在 SolR 服务器 4.10.1 中使用 pecl SolR PHP。当我尝试添加带有提升集的文档时发生 SolrServerError。消息是:"For input string: "10,0"" 代码:500.
我做了以下代码:
//$boostDocument = 10.00;
$doc->setBoost($boostDocument);
foreach($data as $cle=>$valeur) {
if(is_array($valeur) == TRUE) {
foreach ($valeur as $val) {
$doc->addField($cle, $val);
}
} else {
$doc->addField($cle, $valeur);
}
}
try {
$this->solrClient->addDocument($doc, true);
} catch (SolrServerException $e) {
}
这是我尝试添加的结果文档:
array(3) {
["document_boost"]=>
float(10)
["field_count"]=>
int(3)
["fields"]=>
array(3) {
[0]=>
object(SolrDocumentField)#21 (3) {
["name"]=>
string(2) "id"
["boost"]=>
float(0)
["values"]=>
array(1) {
[0]=>
string(6) "752891"
}
}
[1]=>
object(SolrDocumentField)#22 (3) {
["name"]=>
string(4) "type"
["boost"]=>
float(0)
["values"]=>
array(1) {
[0]=>
string(3) "CAT"
}
}
[2]=>
object(SolrDocumentField)#23 (3) {
["name"]=>
string(11) "designation"
["boost"]=>
float(0)
["values"]=>
array(2) {
[0]=>
string(23) "Good guy designation"
[1]=>
string(0) ""
}
}
}
}
没有 $document->SetBoost(10.00)
不会发生错误。
这是由 PHP 中的语言环境设置引起的,因为某些语言环境使用“,”作为小数点分隔符(美式英语使用“.”),这会影响从浮点数到字符串的转换Solr 请求在模块内部生成。
在发出请求之前使用 setlocale(LC_NUMERIC, "C")
编译 PHP 时,您可以强制使用 C 的默认转换,或者可能(我还没有尝试过)将 boost 设置为字符串直接代替(setBoost("10.00") 或 setBoost(10)).
您可以使用setlocale(LC_NUMERIC, 0)
获取当前设置,这样您就可以在发出请求后将其重新设置。