【问题标题】:servlet connect to solr using solrjservlet 使用 solrj 连接到 solr
【发布时间】:2015-04-10 02:36:05
【问题描述】:

我希望我的 servlet 与 solr 建立连接以执行查询。使用 eclipse 我创建了一个简单的 JSP 文件供用户输入他们的查询,然后它将从 servlet 调用 doGet() 方法。从 servlet 我尝试使用 solrj 与 solr 连接

我的 solrj 代码如下。

HttpSolrServer solr = new HttpSolrServer("http://localhost:8983/solr");

SolrQuery query = new SolrQuery();
query.setQuery("sony digital camera");
query.addFilterQuery("cat:electronics","store:amazon.com");
query.setFields("id","price","merchant","cat","store");
query.setStart(0);    
query.set("defType", "edismax");

QueryResponse response = solr.query(query);
SolrDocumentList results = response.getResults();
for (int i = 0; i < results.size(); ++i) {
  System.out.println(results.get(i));
}
}

它基本上只是在线提供的简单代码,没有语法错误,这意味着程序检测到库文件。但是在运行时程序返回 classNotFoundException 错误。

这促使我思考是否可以在 servlet 上实现 solrj。任何人都可以告诉我在哪里可以准确地使用 solrj 代码?我认为代码是正确的,只是我错误地实现了 solrj。

提前致谢!

【问题讨论】:

  • 四处寻找 servlet ClassNotFoundException 问题。它们都是由部署或运行​​时配置问题引起的,例如忘记在 WEB-INF/lib 中包含库(在您的情况下为 solrj)。
  • 嗨@Sheepy 请问我该如何添加jar文件?我已添加到 WEB-INF/lib 但它不起作用

标签: solrj


【解决方案1】:

异常是说您的运行时类路径错误。

假设您在一个 servlet 容器中运行这个类,很可能您缺少的不是 Java EE jar,而是与 SolrJ 有关。

Solrj 几乎没有依赖项:您可以在 Solr 发行版中找到它们,或者如果您对 Apache Maven 有信心,您可以使用它来个性化这些 jar。

无论如何,一旦你确定了这些库,你必须将它们放在你的 webapp 的 WEB-INF/lib 下

有关依赖项列表,您可以在此处阅读:http://mvnrepository.com/artifact/org.apache.solr/solr-solrj/4.10.3

【讨论】:

  • 您好,感谢您的回复。我正在使用 solr-solrj-4.10.3.jar ..我知道传统方法是使用 maven 并执行类路径等..但是有了这个 solr-solrj-4.10.3.jar 我可以免除所有麻烦?还是只是一个jar文件不够?
  • 感谢@Andrea ...确实我错过了一些依赖文件...最后我使用第三方插件调用runjettyrun.jetty在eclipse上运行solr ...并在提取war文件后。 ..我也解决了依赖错误!
猜你喜欢
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
相关资源
最近更新 更多