SolrJ使用教程

2019-03-27 01:27|来源: 网路

Solr4.x测试代码下载

Solr3.x版本

添加数据

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
 
import java.io.IOException;
 
public class SolrjPopulator {
  public static void main(String[] args) throws IOException, SolrServerException {
    CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr");
    for(int i=0;i<1000;++i) {
      SolrInputDocument doc = new SolrInputDocument();
      doc.addField("cat", "book");
      doc.addField("id", "book-" + i);
      doc.addField("name", "The Legend of Po part " + i);
      server.add(doc);
      if(i%100==0) server.commit();  // periodically flush
    }
    server.commit(); 
  }
}

查询数据

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.ModifiableSolrParams;
 
import java.net.MalformedURLException;
 
public class SolrJSearcher {
  public static void main(String[] args) throws MalformedURLException, SolrServerException {
    CommonsHttpSolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");
 
    ModifiableSolrParams params = new ModifiableSolrParams();
    params.set("q", "cat:electronics");
    params.set("defType", "edismax");
    params.set("start", "0");
 
    QueryResponse response = solr.query(params);
    SolrDocumentList results = response.getResults();
    for (int i = 0; i < results.size(); ++i) {
      System.out.println(results.get(i));
    }
  }
}

Solr4.x版本

插入数据

import java.io.IOException;
 
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
 
public class SolrjPopulator {
	public static void main(String[] args) throws IOException, SolrServerException {
		HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr");
		for (int i = 0; i < 1000; ++i) {
			SolrInputDocument doc = new SolrInputDocument();
			doc.addField("cat", "book");
			doc.addField("id", "book-" + i);
			doc.addField("name", "The Legend of Po part " + i);
			server.add(doc);
			if (i % 100 == 0)
				server.commit(); // periodically flush
		}
		server.commit();
	}
}

查询数据

import java.net.MalformedURLException;
 
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.ModifiableSolrParams;
 
public class SolrJSearcher {
	public static void main(String[] args) throws MalformedURLException, SolrServerException {
		HttpSolrServer solr = new HttpSolrServer("http://localhost:8983/solr");
 
		ModifiableSolrParams params = new ModifiableSolrParams();
		params.set("q", "cat:electronics");
		params.set("defType", "edismax");
		params.set("start", "0");
 
		QueryResponse response = solr.query(params);
		SolrDocumentList results = response.getResults();
		for (int i = 0; i < results.size(); ++i) {
			System.out.println(results.get(i));
		}
	}
}

SolrCloud

添加数据

import java.io.IOException;
 
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.common.SolrInputDocument;
 
public class SolrCloudSolrjPopulator {
	public static void main(String[] args) throws IOException, SolrServerException {
		String zkHost = "localhost:2181";
		String defaultCollection = "collection1";
		CloudSolrServer server = new CloudSolrServer(zkHost);
		server.setDefaultCollection(defaultCollection);
 
		for (int i = 0; i < 1000; ++i) {
			SolrInputDocument doc = new SolrInputDocument();
			doc.addField("cat", "book");
			doc.addField("id", "book-" + i);
			doc.addField("name", "The Legend of Po part " + i);
			server.add(doc);
			if (i % 100 == 0)
				server.commit(); // periodically flush
		}
		server.commit();
	}
}

查询数据

import java.net.MalformedURLException;
 
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.ModifiableSolrParams;
 
public class SolrCloudSolrJSearcher {
	public static void main(String[] args) throws MalformedURLException, SolrServerException {
		String zkHost = "localhost:2181";
		String defaultCollection = "collection1";
		CloudSolrServer solr = new CloudSolrServer(zkHost);
		solr.setDefaultCollection(defaultCollection);
 
		ModifiableSolrParams params = new ModifiableSolrParams();
		params.set("q", "cat:electronics");
		params.set("defType", "edismax");
		params.set("start", "0");
 
		QueryResponse response = solr.query(params);
		SolrDocumentList results = response.getResults();
		for (int i = 0; i < results.size(); ++i) {
			System.out.println(results.get(i));
		}
	}
}

转自:http://www.solr.cc/blog/?p=1296

相关问答

更多

添加数据时SolrJ错误(SolrJ error when adding data)

我认为你的urlString不正确,它需要apped你的核心名称,例如: i think your urlString is not correct , it need apped your core name , such as:

索引db通过SolrJ(index db via SolrJ)

如果您只需要能够打开与Solr服务器的连接以进行索引(并且不需要将配置文件与SolrJ项目实际集成),那么这很简单。 首先,您需要打开SolrJ连接,这样做是这样的: HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr"); 另一个选择是利用Spring Data Solr的solr模式,并使Solr服务器bean执行以下操作: <solr:solr-server id="fullSearchIn ...

solrj RealTime得到(solrj RealTime get)

由于RealTime Get是使用备用requestHandler实现的,因此您只需要在SolrQuery上使用setRequestHandler()方法,将"/get"作为处理程序名称。 有关完整示例,请参阅Solr源中此SolrExampleTests.java文件中的testRealTimeGet()方法。 这是该文件的片段: SolrQuery q = new SolrQuery(); q.setRequestHandler("/get"); q.set("id", "DOCI ...

在Eclipse上运行SolrJ(Running SolrJ on Eclipse)

好的,这意味着另类: A)你正在从错误的类中“运行 - - >> Java应用程序”。 打开包含main的类,右键单击它并选择“Run as Java Application” B)你的main方法有一个错误的签名(因此不是一个有效的主方法) - Ok so that means in alternative: A) your're doing "run as -->> Java application" from the wrong class. Open then class that con ...

关于SolrJ范围查询的问题?(A question about SolrJ range query?)

您可以在SolrQuery类上使用addFilterQuery()方法 。 只需按原样传递过滤器查询(“ x:[10 TO 100] AND y:[20 TO 300] ”) You can use the addFilterQuery() method on the SolrQuery class. Just pass the filter query as is ("x:[10 TO 100] AND y:[20 TO 300]")

Solrj API /集合示例(Solrj API/Example for collections)

import org.apache.solr.client.solrj.impl.CloudSolrServer; import org.apache.solr.common.SolrInputDocument; CloudSolrServer server = new CloudSolrServer("localhost:9983"); server.setDefaultCollection("collection1"); SolrInputDocument doc = new SolrInp ...

Solrj查询响应(Solrj query Response)

谢谢Perikli,但它已经整理好了。 代码如下: SolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr"); QueryResponse qResponse = solrServer.query(queryForFecthing); 实际上在创建QueryResponse对象时得到异常,即qResponse ,我认为这是因为我作为参数传递的查询(即上面是' queryForFecthing ')。 但这是 ...

如何使用solrj使用拼写检查进行查询(How can I use solrj to do a query with spellcheck)

您可以通过以下方式指定所有参 query.setParam("spellcheck", "true"); query.setParam("spellcheck.q", query); You can specify all parameters via: query.setParam("spellcheck", "true"); query.setParam("spellcheck.q", query);

使用SolrJ索引文档(Indexing document with SolrJ)

您需要在文档索引过程完成后提交。 因此,如果您重新启动solr,它将执行自动提交。 如果你不想重启Solr。 你可以试试 重新加载核心(请参阅下面的URL,根据您更改URL名称) http://127.0.0.1:8080/solr/admin/cores?action=RELOAD&core=core1 要么 使用solr.commit(); 在你的代码中 You need to commit after document indexing process is done. so if you ...

Solr / Solrj分页(Solr/Solrj pagination)

在服务器上执行查询之前,客户端不会知道你在服务器端设置了什么,对吧? 所以他们全都是空的并不奇怪。 要实现分页,您需要客户端的两个参数 - 页码和每页的项目数量。 一旦你得到了这两个,你可以在客户端构建你的SolrQuery,如下所示: SolrQuery query = new SolrQuery(searchTerm); query.setStart((pageNum - 1) * numItemsPerPage); query.setRows(numItemsPerPage); // exe ...