solrj中的程序终止

时间:2013-12-20 20:47:32

标签: eclipse solr solrj

我正在尝试使用solrj索引文档,这是我的代码,

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.*;
import org.apache.solr.common.SolrInputDocument;
import java.io.IOException;

public class index {

public static void main(String[] args) throws IOException, SolrServerException {
String url = "http://localhost:8080/solr/document/";
HttpSolrServer server = new HttpSolrServer( url );
server.setMaxRetries(1); // defaults to 0.  > 1 not recommended.
server.setConnectionTimeout(5000);
server.setSoTimeout(1000);  // socket read timeout
server.setDefaultMaxConnectionsPerHost(100);
server.setMaxTotalConnections(100);
server.setFollowRedirects(false);  // defaults to false 
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField( "id", 23);
doc1.addField( "title", "doc1" );
doc1.addField( "author","Chetan Bhagat" );
doc1.addField( "contents", "I am the best." );
doc1.addField( "date_modified", "12-12-2014" );
server.commit();    
}
}

在eclipse上运行控制台后显示:

  

2013年12月21日上午2:07:25   org.apache.solr.client.solrj.impl.HttpClientUtil createClient INFO:   创建新的http客户端,   配置:MAXCONNECTIONS = 128&安培; maxConnectionsPerHost = 32&安培; followRedirects =假

导致这种异常终止的原因是什么?我是solr的新手。

2 个答案:

答案 0 :(得分:1)

您似乎错过了将“文档”添加到“服务器”:

...
SolrInputDocument doc1 = new SolrInputDocument();
doc1.addField( "id", 23);
doc1.addField( "title", "doc1" );
doc1.addField( "author","Chetan Bhagat" );
doc1.addField( "contents", "I am the best." );
doc1.addField( "date_modified", "12-12-2014" );
server.add(doc1); // **MISSING LINE!!**
server.commit();
...

这可能是您没有在Solr索引中看到该文档的原因。这是向Solr“添加文档”的示例:http://www.solrtutorial.com/solrj-tutorial.html

HTH。

答案 1 :(得分:0)

网址http://localhost:8080/solr/document/看起来不正确,你从哪里得到的?文件?没有默认处理程序,除非有人自定义了你的solrconfig.xml。要添加文档,您的网址必须类似于:"http://localhost:8080/solr"。请在此处了解有关如何使用SolrJ http://wiki.apache.org/solr/Solrj

的更多信息

更新:将您的doc1添加到服务器对象。