gpt4 book ai didi

java - 如何将 Servlet 与 Apache Solr 服务一起使用

转载 作者:行者123 更新时间:2023-11-28 22:19:25 26 4
gpt4 key购买 nike

我正在为我的 Web 应用程序使用 Java EE 技术。我使用 Apache Solr 作为我的搜索引擎。 AFAIK,在我成功配置 Solr 之后,Solr 正在作为 Restful 服务运行。

因此,在我的 servlet 下,我尝试将此服务称为我之前所做的另一个控制台应用程序。这是一个示例代码,用于从 url 获取 json 数据:

 /** Get Data Fom URL Using GET Method */
public static String getResponseFromGetRequest(String url) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);

/** after prepare for data. prepare for sending */
try {
/**
* HttpResponse is an interface just like HttpGet
* therefore we can't initialize them
*/
HttpResponse httpResponse = httpClient.execute(httpGet);
return parseHttpResponse(httpResponse);

} catch (ClientProtocolException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}

但是包 org.apache.http.impl.client.DefaultHttpClient 不可用(至少在 tomcat 服务器下)。所以,我认为这里可能存在一些问题。我们不能在 servlet 中调用另一个服务,对吗?如果我的猜测是正确的,我该如何解决这个问题?

最佳答案

关于使用 java 中可用的 API 与 solr 交互的简短代码(您不需要了解或关心 servlets、httpclients,什么都不需要)。

HttpSolrServer server = new HttpSolrServer("your restful url goes here");
SolrQuery query = new SolrQuery();
QueryResponse response = server.query(query);
List<MyClass> beans = response.getBeans(MyClass.class);

server 应该是一个 spring bean,它是你正在运行的 solr 服务器的 java 表示(代理对象)。

query 是针对服务器运行的查询,对其进行配置以指定您希望从 solr 获得什么。

response 是对请求的回答。beans 是直接来自 solr 本身的对象(据我所知,您的 solr 字段通过字段名称映射到 java 对象的字段,没有任何限制)。

请注意,server 有很多方法可以在没有任何明确说明的情况下执行简单操作,例如 server.addBean(myBean);

这里是如何在maven中获取Solrj:

    <dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.5.1</version>
</dependency>

如果你没有maven:

http://mvnrepository.com/artifact/org.apache.solr/solr-solrj/4.10.3

点击“下载(JAR)”。

关于java - 如何将 Servlet 与 Apache Solr 服务一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28048348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com