开发者社区> 问答> 正文

运行solr报错的 java.net.URISyntaxException: I?报错

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 



展开
收起
爱吃鱼的程序员 2020-06-09 14:56:17 672 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    192.168.2.230:8983/solr
    改为http://192.168.2.230:8983/solr
    多谢,正解你好这个问题怎么解决的?? 我也遇到了 可以说一下嘛

    怎么解决的?说是语句中含有特殊字符串“&”之类的

    你好,请问你解决了么

    2020-06-09 14:56:34
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载