Lukeリクエストに対する無効なPHPSレスポンス
トピック作成者:ks-solruserml-bot (2024/09/11 21:41 投稿)
5
(The bot translated the original post https://lists.apache.org/thread/mkx0l8m6hfkb9m9ykrb8p1svx1no5wow into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
こんにちは皆さん、
特定のドキュメントに対するLukeリクエストの出力が、wt=phps
を使用した場合、エラーが含まれているため、PHPで逆シリアライズすることができません。
以下のコマンドを実行しています:
curl "http://localhost:8983/solr/techproducts/admin/luke?id=apple&wt=phps"
出力はこのような構造になっていますが、簡略化のため一部を省略しています。
a:4:{s:14:"responseHeader";a:2:{s:6:"status";i:0;s:5:"QTime";i:1;}s:5:"index";a:0:{}s:3:"doc";a:3:{s:5:"docId";i:7;s:6:"lucene";a:3:{s:2:"id";a:0:{}s:10:"compName_s";a:0:{}s:9:"address_s";a:0:{}}s:4:"solr";i:0;a:3:{s:2:"id";s:5:"apple";s:10:"compName_s";s:5:"Apple";s:9:"address_s";s:28:"1 Infinite Way, Cupertino CA";}}s:4:"info";a:2:{s:3:"key";a:0:{}s:4:"NOTE";s:116:"Document Frequency (df) is not updated when a document is marked for deletion. df values include deleted documents.";}}
この出力では、Solrドキュメントはキー「solr」とフィールドの配列として表現されるべきですが、実際には以下の部分で表されています:
s:4:"solr";i:0;a:3:{s:2:"id";s:5:"apple";s:10:"compName_s";s:5:"Apple";s:9:"address_s";s:28:"1 Infinite Way, Cupertino CA";}
i:0;
の部分は本来そこにあるべきではなく、これによりPHPはキー「solr」の値が整数の0であると認識し、その後に配列 a:3:
が続くことを予期しないため、処理が失敗します。おそらく、PHPSerializedResponseWriter
のwriteSolrDocument()
が原因であり、常に配列にドキュメントを書き込むことを想定してwriteKey(idx, false);
を始めているのではないかと考えています。
Thomas
トピックへ返信するには、ログインが必要です。