import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Before;
import org.junit.Test;
public class SolrTest {
private final static String URL = "192.168.2.230:8983/solr";
private final static String zkHostURL = "192.168.2.231:2181";
private HttpSolrServer server = null;
@Before
public void init() {
try {
server = new HttpSolrServer(URL);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test01() {
try {
SolrInputDocument doc = new SolrInputDocument();
//id是唯一的主键,当多次添加的时候,最后添加的相同id的域会覆盖前面的域
doc.addField("id","1");
doc.addField("msg_title", "这是我的第一个solrj的程序");
doc.addField("msg_content","我的solrj的程序究竟能不能跑得起来呢?");
server.add(doc);
server.commit();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void test02() {
try {
List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "2");
doc.addField("msg_title", "很好!solr可以工作了");
doc.addField("msg_content","slor总算可以正式工作了");
docs.add(doc);
doc = new SolrInputDocument();
doc.addField("id", "3");
doc.addField("msg_title", "测试一下solr的添加");
doc.addField("msg_content","看看能不能添加一个列表信息");
docs.add(doc);
server.add(docs);
server.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void test03() {
try {
List<Message> msgs = new ArrayList<Message>();
msgs.add(new Message("4","基于java bean的添加",
new String[]{"通过java bean完成添加","java bean的添加附件"}));
msgs.add(new Message("5","基于java bean的列表数据的添加",
new String[]{"测试如何通过一个对象完成添加","通过对象完成添加的附件"}));
server.addBeans(msgs);
server.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void test04() throws IOException {
try {
//定义查询字符串
SolrQuery query = new SolrQuery("*");
query.setStart(0);
query.setRows(3);
QueryResponse resp = server.query(query);
//查询出来的结果都保存在SolrDocumentList中
SolrDocumentList sdl = resp.getResults();
System.out.println(sdl.getNumFound());
for(SolrDocument sd:sdl) {
// System.out.println(sd);
System.out.println(sd.getFieldValue("msg_title")+","+sd.getFieldValue("msg_content"));
}
} catch (SolrServerException e) {
e.printStackTrace();
}
}
@Test
public void test05() throws IOException {
try {
SolrQuery query = new SolrQuery("*");
query.setStart(0);
query.setRows(3);
QueryResponse resp = server.query(query);
//可以直接查询相应的bean对象,但是不是很常用
List<Message> list = resp.getBeans(Message.class);
System.out.println(list.size());
for(Message msg:list) {
System.out.println(msg.getTitle());
}
} catch (SolrServerException e) {
e.printStackTrace();
}
}
@Test
public void test06() throws IOException {
try {
SolrQuery query = new SolrQuery("测试");
query.setHighlight(true).setHighlightSimplePre("<span class='highligter'>")
.setHighlightSimplePost("</span>")
.setStart(0).setRows(5);
query.setParam("hl.fl", "msg_title,msg_content");
QueryResponse resp = server.query(query);
//查询出来的结果都保存在SolrDocumentList中
SolrDocumentList sdl = resp.getResults();
System.out.println(sdl.getNumFound());
for(SolrDocument sd:sdl) {
String id = (String)sd.getFieldValue("id");
System.out.println(resp.getHighlighting().get(id).get("msg_content"));
}
} catch (SolrServerException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
SolrTest solr=new SolrTest();
solr.init();
solr.test01();
//// solr.test02();
//// solr.test03();
//// solr.test04();
// solr.test05();
} catch (Exception e) {
e.printStackTrace();
}
}
}
java.lang.IllegalArgumentException: Illegal character in scheme name at index 0: 192.168.2.230:8983/solr/update?wt=javabin&version=2
at java.net.URI.create(Unknown Source)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:76)
at org.apache.solr.client.solrj.impl.HttpSolrClient.createMethod(HttpSolrClient.java:427)
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:238)
at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:229)
at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:149)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:173)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:138)
at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:152)
at com.qjj.test.SolrTest.test01(SolrTest.java:43)
at com.qjj.test.SolrTest.main(SolrTest.java:159)
Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 0: 192.168.2.230:8983/solr/update?wt=javabin&version=2
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.checkChar(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
... 11 more
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
192.168.2.230:8983/solr
改为http://192.168.2.230:8983/solr多谢,正解你好这个问题怎么解决的?? 我也遇到了 可以说一下嘛
怎么解决的?说是语句中含有特殊字符串“&”之类的
你好,请问你解决了么