2016-10-31 3 views
5

У меня есть solr 5.4.1 таблица, которую я позволяю пользователям делать комментарии. Через PHP, пользователь выполняет следующую функцию:Исключение записи документ id

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).

{"responseHeader":{"status":400,"QTime":6}, 
"error":{"msg":"Exception writing document id 376299 
to the index; possible analysis error.","code":400}} 

Я не уверен, что причиной этого, но когда это произойдет, это как умирает вся таблица, и я должен использовать restorepoint, чтобы получить его обратно(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=*:*), я не вижу счетчик записей или вообще не изменяю базу данных.

Я делаю что-то неправильно, из-за чего мой стол становится поврежденным?

Редактировать

Bounty time. Мне действительно нужна помощь в решении этого!

Edit2 - Журналы сервера

D: \ Solr \ Solr-5.4.1 \ сервер \ Logs \ solr.log.2

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([email protected]:\solr\solr- 
5.4.1\server\solr\asdf\data\restore.snapshot.solr_backup_20161104 
[email protected]; 
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] 

Кроме того, теперь у меня есть несколько "solr_backupYYYYMM" в папке asdf/data. Могу ли я вручную удалить их, не вызывая проблем? Единственная вещь, которая, я считаю, работает против solr после 5pm, это скрипт python, который я написал для резервного копирования solr каждую ночь, и как часть скрипта, он в настоящее время удаляет любую папку с строкой YYYYMM, которая старше 7 дней (поэтому у меня не хватает места). Я взял эту часть из сценария по состоянию на вчера, в случае, если это может быть причиной этой проблемы. Я просто пытаюсь думать обо всем.

enter image description here

+0

В основном угадывание здесь, но примерно эквивалентное «недопустимому SQL» с SQL-сервера? GIGO, проверьте все представленные данные? Что-то нулевое, требуемый атрибут отсутствует? Плохая цитата? (это звучит слишком сложно, SQL: P) –

+0

Кстати, «num docs» плюс «удаленные документы» равно «max docs» в вашем отчете. –

+0

Есть ли что-то конкретное в отношении «комментариев» к тем, которые сбой (например, NULL, строка против массива и т. Д.) Или они содержат символ, который не отображается в других (например, запятая или символ более высокого порядка, такие как é или multi -byte символов?) – Robbie

ответ

2

кажется, что ваша проблема описана здесь: http://lucene.472066.n3.nabble.com/Exception-writing-document-to-the-index-possible-analysis-error-td4174845.html

Как есть целая дискуссия, я копировать две цитаты с обсуждения в нижней строке:

«Я думаю, вы пытались индексировать пустую строку в числовое поле. Это не будет работать. Это должно быть допустимое число, или вам нужно, чтобы полностью покинули поле ».

"Поле _collection_id требуется в схеме и не заполнено мой запрос на обновление".

Ваша вторая проблема «IndexNotFoundException: no segments* file found in» происходит потому, что после исключения IndexWriter умирает оставляя write.lock и временные файлы индекса на месте.Эта проблема описана здесь https://wilsonericn.wordpress.com/2011/12/14/my-first-5-lucene-mistakes в разделе «# 3:« Отказ от открытия индекса ». заголовок.

Смежные вопросы