Java 使用SolrJ客户端连接器3.6连接到Solr 1.4
如何使用SolrJ 3.6连接器连接到配置了Basic Auth的Solr 1.4搜索服务器?基于: 获取相关依赖项,例如使用maven:Java 使用SolrJ客户端连接器3.6连接到Solr 1.4,java,maven,solr,solrj,apache-httpcomponents,Java,Maven,Solr,Solrj,Apache Httpcomponents,如何使用SolrJ 3.6连接器连接到配置了Basic Auth的Solr 1.4搜索服务器?基于: 获取相关依赖项,例如使用maven: <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>3.6.1</version>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>3.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.1.2</version>
</dependency>
org.apache.solr
索尔索尔
3.6.1
org.apache.httpcomponents
httpcore
4.2.2
org.apache.httpcomponents
httpclient
4.2.1
org.apache.httpcomponents
httpime
4.1.2
使用SolrJ 3.6和最新的Apache Http组件Http客户端连接到Solr 1.4的示例应用程序,以协商基本身份验证:
import java.io.IOException;
import java.util.Iterator;
import org.apache.http.HttpException;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HttpContext;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
/**
* Sample app
*
*/
public class App
{
public static void main( String[] args ) throws SolrServerException, IOException
{
String url = "https://localhost:8080/solr/";
String httpAuthUser = "solr_admin";
String httpAuthPass= "somePassword";
// Configure latests Apache Http Components http client
HttpClient httpClient = new DefaultHttpClient();
if (httpAuthUser != null && httpAuthPass != null) {
AbstractHttpClient client = (AbstractHttpClient) httpClient;
App a = new App();
client.addRequestInterceptor(a.new PreEmptiveBasicAuthenticator(httpAuthUser, httpAuthPass));
}
// Configure XMLResponseParser as standard javabin parser does not work with 1.4
SolrServer solr = new HttpSolrServer(url, httpClient, new XMLResponseParser());
// Test adding some data
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("name", "Gouda cheese wheel");
document.addField("price", "49.99");
UpdateResponse uresponse = solr.add(document);
System.out.println("UpdateResponse"+uresponse.getStatus());
solr.commit();
// Query for the data just added
SolrQuery parameters = new SolrQuery();
parameters.set("q", "*");
QueryResponse response = solr.query(parameters);
SolrDocumentList list = response.getResults();
Iterator<SolrDocument> si = list.iterator();
System.out.println("Solr document"+list.getNumFound());
while(si.hasNext()){
System.out.println("Solr document"+si.next().toString());
}
}
protected class PreEmptiveBasicAuthenticator implements HttpRequestInterceptor {
private final UsernamePasswordCredentials credentials;
public PreEmptiveBasicAuthenticator(String user, String pass) {
credentials = new UsernamePasswordCredentials(user, pass);
}
public void process(HttpRequest request, HttpContext context)
throws HttpException, IOException {
request.addHeader(BasicScheme.authenticate(credentials,"US-ASCII",false));
}
}
}
import java.io.IOException;
导入java.util.Iterator;
导入org.apache.http.HttpException;
导入org.apache.http.HttpRequest;
导入org.apache.http.HttpRequestInterceptor;
导入org.apache.http.auth.UsernamePasswordCredentials;
导入org.apache.http.client.HttpClient;
导入org.apache.http.impl.auth.BasicScheme;
导入org.apache.http.impl.client.AbstractHttpClient;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.protocol.HttpContext;
导入org.apache.solr.client.solrj.SolrQuery;
导入org.apache.solr.client.solrj.SolrServer;
导入org.apache.solr.client.solrj.SolrServerException;
导入org.apache.solr.client.solrj.impl.HttpSolrServer;
导入org.apache.solr.client.solrj.impl.XMLResponseParser;
导入org.apache.solr.client.solrj.response.QueryResponse;
导入org.apache.solr.client.solrj.response.UpdateResponse;
导入org.apache.solr.common.SolrDocument;
导入org.apache.solr.common.SolrDocumentList;
导入org.apache.solr.common.SolrInputDocument;
/**
*示例应用程序
*
*/
公共类应用程序
{
公共静态void main(字符串[]args)引发SolrServerException、IOException
{
字符串url=”https://localhost:8080/solr/";
字符串httpAuthUser=“solr\u admin”;
字符串httpAuthPass=“somePassword”;
//配置最新的Apache Http组件Http客户端
HttpClient HttpClient=新的DefaultHttpClient();
如果(httpAuthUser!=null&&httpAuthPass!=null){
AbstractHttpClient=(AbstractHttpClient)httpClient;
应用程序a=新应用程序();
addRequestInterceptor(一种新的抢占式基本身份验证程序(httpAuthUser,httpAuthPass));
}
//将XMLResponseParser配置为标准javabin解析器不适用于1.4
SolrServer solr=新的HttpSolrServer(url,httpClient,新的XMLResponseParser());
//测试添加一些数据
SolrInputDocument=新的SolrInputDocument();
文件.addField(“id”,“552199”);
文件.addField(“名称”、“Gouda奶酪轮”);
文件.addField(“价格”,“49.99”);
UpdateResponse-ureResponse=solr.add(文档);
System.out.println(“UpdateResponse”+ureResponse.getStatus());
solr.commit();
//查询刚刚添加的数据
SolrQuery参数=新的SolrQuery();
参数集(“q”、“*”);
QueryResponse response=solr.query(参数);
SolrDocumentList=response.getResults();
迭代器si=list.Iterator();
System.out.println(“Solr文档”+list.getNumFound());
while(si.hasNext()){
System.out.println(“Solr文档”+si.next().toString());
}
}
受保护类PreEmptiveBasicAuthenticator实现HttpRequestInterceptor{
私有最终用户名密码凭据凭据;
公共抢占基本验证程序(字符串用户,字符串传递){
凭证=新用户名密码凭证(用户,通过);
}
公共无效进程(HttpRequest请求、HttpContext上下文)
抛出HttpException,IOException{
addHeader(BasicScheme.authenticate(凭证,“US-ASCII”,false));
}
}
}