Php 异常写入文档id

Php 异常写入文档id,php,solr,solr5,Php,Solr,Solr5,我有一个Solr5.4.1表,允许用户对其进行评论。通过PHP,用户运行以下函数: function solr_update($id, $comments) { $ch = curl_init("http://url:8983/solr/asdf/update?commit=true"); $data = array( "id" => $id, "comments" => array( "set"

我有一个Solr5.4.1表,允许用户对其进行评论。通过PHP,用户运行以下函数:

function solr_update($id, $comments) {
  $ch = curl_init("http://url:8983/solr/asdf/update?commit=true");


  $data = array(
            "id" => $id,
            "comments" => array(
              "set" => $comments),
            );

  $data_string = json_encode(array($data));          

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

  echo curl_exec($ch);

}
大多数情况下,这是可行的,我得到了这样的回答:

{"responseHeader":{"status":0,"QTime":83}}
最近我遇到过这样的情况,这是我从curl_exec$ch得到的回应

我不确定是什么原因造成的,但当它发生时,就像整个表都死掉了一样,我必须使用恢复点来恢复它http://url:8983/solr/asdf/replication?command=restore&name=solr_backup_20161028.

如果我尝试在solr中加载核心http://url:8983/solr/asdf,没有记录显示Luke没有配置。虽然我仍然可以运行查询:http://url:8983/solr/asdf/select?q=*:*,我根本看不到记录计数或修改数据库

我是否做错了导致我的表损坏的事情

编辑 赏金时间。我真的需要一些帮助来解决这个问题

Edit2-服务器日志 d:\solr\solr-5.4.1\server\logs\solr.log.2

另外,我现在在我的asdf/data文件夹中有几个solr_backupyyymm文件夹。我可以手动删除这些而不引起问题吗?我相信,在下午5点之后,唯一一个在solr上运行的是我每晚为备份solr编写的python脚本,作为脚本的一部分,它当前正在删除任何包含YYYYMM字符串的文件夹,该字符串超过7天,因此我不会耗尽空间。从昨天起,我已经从脚本中删除了这一部分,以防这可能是导致问题的原因。我只是想想想一切


这里似乎描述了您的问题:

由于有一个完整的讨论,我将复制两个引用,并附上讨论的底线:

我认为您已经尝试将空字符串索引到数字字段中。 那是行不通的。它必须是一个有效的数字,否则您需要 把场地完全排除在外

架构中需要字段_collection_id,但未填写该字段 我的更新请求


第二个问题是IndexNotFoundException:在中找不到segments*文件,因为在异常IndexWriter死亡后,write.lock和临时索引文件仍保留在原位。此问题在下面的第3节中描述:保持IndexWriter打开。标题。

这里主要是猜测,但大致相当于来自SQL server的无效SQL?GIGO,仔细检查所有提交的数据?某些内容为空,缺少必需的属性?错误的报价?这听起来有点太SQL了,:P顺便提一下,num docs加上deleted docs等于您报告中的max docs。对于失败的注释,例如NULL,字符串vs.数组等,或者它们是否包含其他字符中不出现的字符,例如逗号或更高阶字符,如é或多字节字符?附议@Robbie的说法-。而且“可能特别痛苦”。你有没有可能测试它,找到一个总是失败的和一个通过的,并将这些例子和日志添加到问题中?我知道这是一个生产系统,所以这只是一个试探性的请求。你能发布一个触发此错误的查询示例,也许还有来自solr的堆栈跟踪吗?
{"responseHeader":{"status":400,"QTime":6},
"error":{"msg":"Exception writing document id 376299 
to the index; possible analysis error.","code":400}}
    2016-11-15 13:59:49.997 ERROR (qtp434176574-19) [   x:invoice] 
o.a.s.s.HttpSolrCall null:org.apache.lucene.index.IndexNotFoundException:
 no segments* file found in
 NRTCachingDirectory(MMapDirectory@D:\solr\solr-
5.4.1\server\solr\asdf\data\restore.snapshot.solr_backup_20161104
 lockFactory=org.apache.lucene.store.NativeFSLockFactory@17df8f10;
 maxCacheMB=48.0 maxMergeSizeMB=4.0): files: [_pej4.fdt,
 _pej4_Lucene50_0.doc, _pej4_Lucene50_0.tim, _wxvy.fdt,
 _wxvy_Lucene50_0.doc, _wxvy_Lucene50_0.tim]