为了账号安全,请及时绑定邮箱和手机立即绑定

Solr + php 报400

Solr + php 报400

慕后森 2019-04-06 16:57:29
初学Solr从网上下载了一个例子,但是运行时报以下错误:Fatalerror:Uncaughtexception'Apache_Solr_HttpTransportException'withmessage''400'Status:BadRequest'in/Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.php:338Stacktrace:#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}thrownin/Applications/XAMPP/xamppfiles/htdocs/phpSolr/SolrPhpClient/Apache/Solr/Service.phponline338从网上找过答案,大部分都说是schema.xml中没有定义field,但是我确认我使用的field都说定义了,实在是不知道为什么了,希望有人知道!!
查看完整描述

2 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

首先我要说的是...并不是所有的牛奶都叫某某苏...也并不是所有的错误都叫404...你的这个错误是'400'Status:BadRequest...而不是404...一般来说这个错误出现的原因就如你所说...是schema.xml中没有定义field...但是具体如何还要分析...Apache_Solr_Service这个类不会回传solr的内部错误...所以我们要用其他方式解决...第一种方式比较简单...查看solr的log...会有类似于下面一行的内容...SEVERE:org.apache.solr.common.SolrException:****其中****就是具体造成错误的原因...第二种方法...使用solr自带的一个工具叫solradmin...在这个工具里你可以手动输入查询...如果查询无效的话也会显示出详细的错误信息...以你描述的情况来说...只需要输入name:????然后点确定就好...有了错误信息才能知道如何解决这个问题...不然只能靠东一榔头西一棒子的猜测...费时费力...只说solr报了错...你也不知道为什么只希望别人知道...很遗憾...我觉得没有人会知道...话可能说的有点重...抱歉...但道理是这样...先要学会良好的描述自己遇到的问题才能希望别人可以准确高效的解决问题...你说是不是..?
                            
查看完整回答
反对 回复 2019-04-06
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

注意你在调用Apache_Solr_Service()构造函数时的传参。有一个陷阱是第五个参数即$compatibilityLayer需传递的参数应根据你的Solr服务器版本进行变化,如你是Solr4.0+应传递newApache_Solr_Compatibility_Solr4CompatibilityLayer。
原因是Solr3和Solr4生成的XML格式不同,有一些参数在使用时有兼容问题,从而触发HTTP400BadRequest问题。目前的solr-php-client默认使用的是Solr3标准。
希望能帮助到你。
                            
查看完整回答
反对 回复 2019-04-06
  • 2 回答
  • 0 关注
  • 343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信