Solr + php 報400

來源:互聯網
上載者:User
初學Solr從網上下載了一個例子,但是運行時報以下錯誤:

Fatal error: Uncaught exception 'Apache_Solr_HttpTransportException' with message ''400' Status: Bad Request' in /Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php:338 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php(1170): Apache_Solr_Service->_sendRawGet('http://localhos...') #1 /Applications/XAMPP/xamppfiles/htdocs/phpSolr/index.php(78): Apache_Solr_Service->search('name: ????', 0, 10) #2 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php on line 338

從網上找過答案,大部分都說是schema.xml中沒有定義field,但是我確認我使用的field都說定義了,實在是不知道為什麼了,希望有人知道!!

回複內容:

初學Solr從網上下載了一個例子,但是運行時報以下錯誤:

Fatal error: Uncaught exception 'Apache_Solr_HttpTransportException' with message ''400' Status: Bad Request' in /Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php:338 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php(1170): Apache_Solr_Service->_sendRawGet('http://localhos...') #1 /Applications/XAMPP/xamppfiles/htdocs/phpSolr/index.php(78): Apache_Solr_Service->search('name: ????', 0, 10) #2 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php on line 338

從網上找過答案,大部分都說是schema.xml中沒有定義field,但是我確認我使用的field都說定義了,實在是不知道為什麼了,希望有人知道!!

首先我要說的是 ... 並不是所有的牛奶都叫某某蘇 ... 也並不是所有的錯誤都叫 404 ...

你的這個錯誤是 '400' Status: Bad Request ... 而不是 404 ...

一般來說這個錯誤出現的原因就如你所說 ... 是 schema.xml 中沒有定義 field ...

但是具體如何還要分析 ...

Apache_Solr_Service 這個類不會回傳 solr 的內部錯誤 ... 所以我們要用其他方式解決 ...

第一種方式比較簡單 ... 查看 solr 的 log ... 會有類似於下面一行的內容 ...

SEVERE: org.apache.solr.common.SolrException: ****

其中 **** 就是具體造成錯誤的原因 ...

第二種方法 ... 使用 solr 內建的一個工具叫 solr admin ...

在這個工具裡你可以手動輸入查詢 ... 如果查詢無效的話也會顯示出詳細的錯誤資訊 ...

以你描述的情況來說 ... 只需要輸入 name:???? 然後點確定就好 ...

有了錯誤資訊才能知道如何解決這個問題 ... 不然只能靠東一榔頭西一棒子的猜測 ... 費時費力 ...

只說 solr 報了錯 ... 你也不知道為什麼只希望別人知道 ... 很遺憾 ... 我覺得沒有人會知道 ...

話可能說的有點重 ... 抱歉 ... 但道理是這樣 ...

先要學會良好的描述自己遇到的問題才能希望別人可以準確高效的解決問題 ... 你說是不是 ..?

注意你在調用 Apache_Solr_Service() 建構函式時的傳參。有一個陷阱是第五個參數即 $compatibilityLayer 需傳遞的參數應根據你的 Solr 伺服器版本進行變化,如你是 Solr 4.0+ 應傳遞 new Apache_Solr_Compatibility_Solr4CompatibilityLayer

原因是 Solr3 和 Solr4 產生的 XML 格式不同,有一些參數在使用時有相容問題,從而觸發 HTTP 400 Bad Request 問題。目前的 solr-php-client 預設使用的是 Solr3 標準。

希望能協助到你。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.