• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Solr + php 报400

php 搞代码 3年前 (2022-01-25) 24次浏览 已收录 0个评论
文章目录[隐藏]

初学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/x<span>@本文来*源gaodai#ma#com搞*!代#%^码$网*</span><textarea>搞gaodaima代码</textarea>amppfiles/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 标准。

希望能帮助到你。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Solr + php 报400

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址