У меня проблема, когда я запускаю пример в PHP, код ниже:
<?php require_once( 'SolrPhpClient/Apache/Solr/Service.php' ); // // // Try to connect to the named server, port, and url // $solr = new Apache_Solr_Service( 'localhost', '8983', '/solr/' ); if ( ! $solr->ping() ) { echo 'Solr service not responding.'; exit; } // // // Create two documents to represent two auto parts. // In practice, documents would likely be assembled from a // database query. // $parts = array( 'spark_plug' => array( 'partno' => 1, 'name' => 'Spark plug', 'model' => array( 'Boxster', '924' ), 'year' => array( 1999, 2000 ), 'price' => 25.00, 'inStock' => true, ), 'windshield' => array( 'partno' => 2, 'name' => 'Windshield', 'model' => '911', 'year' => array( 1999, 2000 ), 'price' => 15.00, 'inStock' => false, ) ); $documents = array(); foreach ( $parts as $item => $fields ) { $part = new Apache_Solr_Document(); foreach ( $fields as $key => $value ) { if ( is_array( $value ) ) { foreach ( $value as $datum ) { $part->setMultiValue( $key, $datum ); } } else { $part->$key = $value; } } $documents[] = $part; } // // // Load the documents into the index // try { $solr->addDocuments( $documents ); $solr->commit(); $solr->optimize(); } catch ( Exception $e ) { echo $e->getMessage(); } // // // Run some queries. Provide the raw path, a starting offset // for result documents, and the maximum number of result // documents to return. You can also use a fourth parameter // to control how results are sorted and highlighted, // among other options. // $offset = 0; $limit = 10; $queries = array( 'partno: 1 OR partno: 2', 'model: Boxster', 'name: plug' ); foreach ( $queries as $query ) { $response = $solr->search( $query, $offset, $limit ); if ( $response->getHttpStatus() == 200 ) { // print_r( $response->getRawResponse() ); if ( $response->response->numFound > 0 ) { echo "$query <br />"; foreach ( $response->response->docs as $doc ) { echo "$doc->partno $doc->name <br />"; } echo '<br />'; } } else { echo $response->getHttpStatusMessage(); } } ?>
Но после запуска отображается следующая ошибка:
'400' Status: Bad Request Fatal error: Uncaught exception 'Apache_Solr_HttpTransportException' with message ''400' Status: Bad Request' in C:\software\study\php\xampp\xampp\htdocs\SolrPhpClient\Apache\Solr\Service.php:338 Stack trace: #0 C:\software\study\php\xampp\xampp\htdocs\SolrPhpClient\Apache\Solr\Service.php(1170): Apache_Solr_Service->_sendRawGet('http://localhos...') #1 C:\software\study\php\xampp\xampp\htdocs\solr1.php(98): Apache_Solr_Service->search('partno: 1 OR pa...', 0, 10) #2 {main} thrown in C:\software\study\php\xampp\xampp\htdocs\SolrPhpClient\Apache\Solr\Service.php on line 338
В чем может быть проблема.
Вся помощь приветствуется.
Вероятно, у вас есть (a) плохой синтаксис запроса или (b) неверно сконфигурированный индекс.
Проверка индекса
Похоже, у вас есть поля для partno, model и т. Д. Вам нужно убедиться, что они настроены в вашем schema.xml . Я мог догадаться, что у вас их нет, и поэтому ваше представление документа не работает, или что у вас есть поле для модели, но оно не является многозначным.
Если его получение прошлое представление документа, то вы можете иметь вопрос вопрос …
Отладка запроса
Самый простой способ отладки вашего запроса – эхо-запрос перед его отправкой. В этом случае:
echo $query
Извлеките результат и нажмите:
http://localhost:8983/solr/select?q=<query>
(где запрос из инструкции echo).
Вероятно, вы получите ошибку 400. Я предполагаю, что у вас есть неправильное имя поля где-то или используется недопустимый синтаксис в вашем запросе. Если вы можете отправить запрос $ query, это облегчит вам помощь в этой проблеме.