我正在尝试使用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的新手。
答案 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添加到服务器对象。