1.在 tomcat 的 F:\Tomcat 6.0.26_solr\conf\tomcat-users.xml 添加用户角色并指定访问的用户名密码
<role rolename="solr"/>
<user username="admin" password="admin" roles="solr"/>
2.在 F:\Tomcat6.0.26_solr\webapps\solr\WEB-INF\web.xm 中添加用户访问权限设置
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Lockdown</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>This applies only to the "tomcat" security role</description>
<role-name>solr</role-name>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name>
</login-config>
通过 solrJ 进行访问
public void solr() {
//String URL = "http://username:password@localhost:8080/solr/core1";
String URL = "http://admin:admin@localhost:8080/solr/core1";
httpSolrClient = new HttpSolrClient.Builder(URL).build();
httpSolrClient.setConnectionTimeout(600000);
// 正常情况下,以下参数无须设置
// 使用老版本solrj操作新版本的solr时,因为两个版本的javabin incompatible,所以需要设置Parser
httpSolrClient.setParser(new XMLResponseParser());
// socket read timeout
httpSolrClient.setSoTimeout(600000);
httpSolrClient.setDefaultMaxConnectionsPerHost(100);
httpSolrClient.setMaxTotalConnections(100);
// defaults to false
httpSolrClient.setFollowRedirects(false);
// allowCompression defaults to false.
// Server side must support gzip or deflate for this to have any effect.
httpSolrClient.setAllowCompression(true);
// 使用SolrQuery传递参数,SolrQuery的封装性更好
httpSolrClient.setRequestWriter(new BinaryRequestWriter());
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
try {
QueryResponse response = httpSolrClient.query(query);
// 获取查询的结果
SolrDocumentList docs = response.getResults();
JSONObject json = new JSONObject();
JSONArray jsonArry = new JSONArray();
for (SolrDocument doc : docs) {
JSONObject jsondata = new JSONObject();
for (String key : doc.getFieldNames()) {
String content = doc.getFieldValue(key).toString();
jsondata.put(key, content);
}
jsonArry.add(jsondata);
}
json.put("total", docs.getNumFound());
json.put("data", jsonArry);
System.out.println(json.toString());
}
catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}