Slor 条件查询提示:org.apache.http.ParseException: Invalid content type:
Posted 在奋斗的大道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Slor 条件查询提示:org.apache.http.ParseException: Invalid content type:相关的知识,希望对你有一定的参考价值。
今天在编写Solr查询条件时,启动单元测试,solr 提示如下错误信息:
Caused by: org.apache.http.ParseException: Invalid content type:
at org.apache.http.entity.ContentType.parse(ContentType.java:233)
at org.apache.solr.client.solrj.impl.HttpSolrServer.executeMethod(HttpSolrServer.java:496)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:210)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:206)
at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:91)
... 90 more
报错代码片段:
SolrQuery query = new SolrQuery();
this.setQuery(query, localParam);
// solr请求
QueryResponse queryResponse = server.query(query);
public void setQuery(SolrQuery query, Map<String, Object> parameter){
String text = (String) parameter.get("text");
String type = (String) parameter.get("type");
if(StringUtils.isEmpty(text)){
// 默认查询全部
query.setQuery("*:*");
} else {
if(StringUtils.isEmpty(type)){
// 默认查询:text 字段
query.setQuery("text:" +"*".concat(text).concat("*"));
} else {
StringBuilder builder = new StringBuilder();
if("certificate".equalsIgnoreCase(type)){
builder.append("205designNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("205approvalNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("205landLicenseNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("205devUsePlanningNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("206planningVerCertificate:" + "*".concat(text).concat("*")).append(" or ");
builder.append("206trafficPlanningOpinionsNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("209consLandPlanningLicense:" + "*".concat(text).concat("*")).append(" or ");
builder.append("211engPlanningNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("211planningOpinionRecordNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("504consLandPlanningLicense:" + "*".concat(text).concat("*")).append(" or ");
builder.append("504landApproveNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("504landReserveNo:" + "*".concat(text).concat("*")).append(" or ");
builder.append("504landParcel:" + "*".concat(text).concat("*"));
query.setQuery(builder.toString());
} else if("unit".equalsIgnoreCase(type)){
builder.append("205devOrgName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("205designOrgName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("205designOrgPerson:" + "*".concat(text).concat("*")).append(" or ");
builder.append("206unitName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("211applyName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("211designOrgName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("211unitName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("504landUseUnit:" + "*".concat(text).concat("*")).append(" or ");
builder.append("226punisherName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("226companyName:" + "*".concat(text).concat("*")).append(" or ");
builder.append("226client:" + "*".concat(text).concat("*")).append(" or ");
builder.append("226clientUnit:" + "*".concat(text).concat("*"));
query.setQuery(builder.toString());
} else if("title".equalsIgnoreCase(type)){
builder.append("archTitle:" + "*".concat(text).concat("*"));
query.setQuery(builder.toString());
}
}
}
}
造成问题原因:GET向solr传递参数的时候参数过长导致的。
解决办法一: GET请求替换为POST 请求
修改后的代码:
SolrQuery query = new SolrQuery();
this.setQuery(query, localParam);
// solr请求
QueryResponse queryResponse = server.query(query, METHOD.POST);
解决办法二:修改solr配置
配置文件位置:SOLRHOME/CORE_NAME/conf/solrconfig.xml
找到如下配置:
<maxBooleanClauses>1024</maxBooleanClauses>
1024 改为10240
其中,SOLRHOME为你的solr主目录,CORENAME为你的core的名称
以上是关于Slor 条件查询提示:org.apache.http.ParseException: Invalid content type:的主要内容,如果未能解决你的问题,请参考以下文章
spring-data-slor 通配符的匹配很全面, 但无法找到元素 'solr:solr-server' 的声明。