`
小网客
  • 浏览: 1240990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Solr之Solrj封装

    博客分类:
  • Java
 
阅读更多

基本信息:

版本:7.0.0

单机版,cloud版本有所区分

步骤:

1.依赖:

<dependency>
	<groupId>org.apache.solr</groupId>
	<artifactId>solr-solrj</artifactId>
	<version>7.0.0</version>
</dependency>

2.业务封装代码:

public class SearchClient {
	private SolrClient client;

	public SearchClient(String baseSolrUrl, String core) {
		client = new HttpSolrClient.Builder(baseSolrUrl + core).build();
	}

	 
	public List<Article> search(String kw,  int rows)
			throws Exception {
		SolrQuery query = new SolrQuery();
		query.setQuery("title:" + kw);
		query.setQuery("type:" + kw);
		query.setQuery("content:" + kw);
		query.setRows(rows);
		QueryResponse queryResponse = client.query(query);
		SolrDocumentList results = queryResponse.getResults();
		List<Article> items =new ArrayList<Article>();
		  for (SolrDocument solrDocument : results) {
			  Article item=new Article();
			  item.setId(solrDocument.get("id")+"");
			  item.setTitle(solrDocument.get("title")+"");
			  item.setType(solrDocument.get("type")+"");
			  items.add(item);
		}
		
		return items;

	}

	public void delete(String id) throws Exception {
		client.deleteById(id);
		client.commit();
	}

	public void add(List<Article> items) throws Exception {
		for (Article item : items) {
			SolrInputDocument solrInputDocument = new SolrInputDocument();
			solrInputDocument.addField("id", item.getId());
			solrInputDocument.addField("content", item.getContent());
			solrInputDocument.addField("title", item.getTitle());
			solrInputDocument.addField("type", item.getType());
			client.add(solrInputDocument);
		}
		
		client.commit();
	}

	public void closeQuietly() {
		try {
			client.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

测试:

public static void add() throws Exception {
	String baseSolrUrl="http://localhost:8983/solr/";
	String core="someabcd";
	SearchClient client=new SearchClient(baseSolrUrl,core);
	List<Article> items=new ArrayList<Article>();
	List<String> lines=FileUtils.readLines(new File("E:/data/test.data00"));
	for (String line : lines) {
		Article item=JSON.parseObject(line, Article.class);
		item.setId(CommonUtils.getUUID32());
		items.add(item);
	}
	client.add(items);
	client.closeQuietly();
}
public static void search() throws Exception {
	String baseSolrUrl="http://localhost:8983/solr/";
	String core="someabcd";
	
	SearchClient client=new SearchClient(baseSolrUrl,core);
	List<Article> items=client.search("Apache版本", 10);
	System.out.println(items);
	client.closeQuietly();
}
public static void del(String id) throws Exception {
	String baseSolrUrl="http://localhost:8983/solr/";
	String core="someabcd";
	
	SearchClient client=new SearchClient(baseSolrUrl,core);
	client.delete(id);
	client.closeQuietly();
}

 

ps:

如果想直接反序列为Bean那么需要用其自定义注解

@Field("id")

private String id;

@Field

private String title;

0
0
分享到:
评论

相关推荐

    solr-solrj 5.0.0 demo

    在处理查询结果时,`SolrDocument`对象封装了匹配的文档信息,可以通过字段名获取值。 总的来说,Solr-Solrj 5.0.0是Java开发者与Solr集成的有力工具,尤其在处理中文文本时,通过合理的配置和使用分词器,可以实现...

    solrj工具类封装

    solrj工具类封装,包括条件批量查询,批量增删改,分段修改。

    SolrJ6.3.0

    它提供了对 Lucene 库的封装,Lucene 是 Solr 的基础,用于实现高效的全文检索。 2. **solr-solrj-6.3.0.jar**:这个就是 SolrJ 的库文件,提供了与 Solr 服务器通信的接口和类。开发者可以使用这个库来创建 Solr ...

    详解java整合solr5.0之solrj的使用

    Java整合Solr5.0的过程中,SolrJ是Java客户端库,用于与Solr服务器进行交互,提供了方便的API来执行各种操作。本篇文章将详细阐述如何使用SolrJ进行索引管理和查询。 首先,集成SolrJ需要将相应的依赖库引入项目。...

    solrJ 需要的jar文件 (全)

    SolrJ是Apache Solr官方提供的Java客户端库,它使得在Java应用程序中与Solr搜索引擎进行交互变得简单。这个压缩包文件包含了SolrJ运行所必需的一些关键库,包括JUnit测试框架、Commons IO和Commons Logging。接下来...

    solr-jar包

    SolrJ封装了所有的网络通信细节,提供了丰富的API来执行各种Solr操作。 **SolrJ的主要功能** 1. **索引操作**:SolrJ允许开发者创建和更新Solr文档,将数据高效地导入到索引中。它支持批量提交,可以显著提高索引...

    apache-solr-3.5.0.jar

    其中,Solr服务器的核心功能如索引存储、查询处理、请求处理器和响应生成器都封装在这个JAR文件里。此外,它还包含了配置文件和示例文档,帮助用户快速启动和配置Solr服务器。 2. `apache-solr-solrj-3.5.0.jar`: ...

    solr

    - `org.apache.solr.client.solrj.response.QueryResponse`:封装查询响应结果的类。 - `org.apache.solr.common.SolrDocumentList`:存储文档列表的容器。 - `org.apache.solr.common.SolrDocument`:表示单个文档...

    lucene solr框架代码实例(可直接运行)

    SolrJ封装了与Solr服务器通信的细节,让开发者可以专注于业务逻辑,而不是底层网络通信。 总之,Lucene作为基础搜索库,为全文搜索提供了强大的技术支撑,而Solr则在Lucene之上构建了一个更全面、易用的搜索平台。...

    solrj的使用

    SolrJ是Apache Solr官方提供的Java客户端库,主要用于与Solr服务器进行交互,包括索引数据、查询、管理Solr核心等操作。这个库极大地简化了开发人员在Java环境中与Solr通信的过程,使得我们可以方便地在应用程序中...

    solr教材-PDF版

    - **1.5.1 1.3版本**:介绍了Solr 1.3版本的主要特性和改进之处。 - **1.5.2 1.4版本**:描述了Solr 1.4版本新增的功能,如增强的安全性设置、改进的复制机制等。 **1.6 分布式和复制Solr架构** - 描述了Solr如何...

    solr学习心得和总结笔记

    2. SolrJ查询索引:同样,查询索引也可以通过SolrJ完成,将查询语句封装为Java对象,然后发送到Solr服务器获取结果。 综上所述,Solr是实现站内搜索的强大工具,结合SolrJ,可以让开发人员更高效地处理全文检索和...

    Solrj 中文教程

    Schema是Solr的核心组成部分之一,通过它来管理索引的数据结构。 **1.2.3 查询** Solr提供了强大的查询语言,支持复杂的查询语法,包括布尔逻辑、近似匹配、短语查询等,以满足不同类型的搜索需求。 **1.2.4 核心*...

    solr基础知识介绍

    Solr是一个基于Lucene的Java搜索引擎服务器,它封装并扩展了Lucene的功能。Solr支持层面搜索和命中高亮显示,并且能够输出包括XML、XSLT和JSON在内的多种格式。Solr易于安装和配置,并且提供了一个基于HTTP的管理...

    solr各个热点功能详解

    Solr是对Lucene的封装和扩展,提供了一个完整的搜索服务器解决方案,包括企业管理、监控和性能优化。Lucene则更专注于底层的搜索算法和索引构建,而Solr则在此基础上添加了如动态字段、管理界面、查询语言扩展等...

    solr搜索插件

    4. **索引数据**:使用Solr提供的API或者客户端工具,如SolrJ(Java库)或命令行工具,将需要搜索的数据导入到Solr中建立索引。索引过程可以是批量的,也可以是实时的,取决于你的数据更新频率。 5. **查询与优化**...

    solr中文教程

    Solr 则是在 Lucene 的基础上进行服务器化封装,提供了更高级别的服务,包括Web界面、配置管理、集群功能等,使得部署和使用更加方便。 要安装 Solr,首先需要确保系统上已经安装了 Java 虚拟机(JVM),最低版本...

    JAVA+Solr分词项目工程实例Java源码

    - `DocumentBuilder`:构建Solr文档对象,封装要索引的数据。 - `AnalyzerConfig`:配置分词策略,可能包含自定义的Analyzer类。 - `Indexer`:索引工具,负责将数据送入Solr服务器。 - `QueryExecutor`:执行...

    solr搜索引擎支持分页

    Solr在其之上进行了封装,增加了分布式搜索、XML/HTTP和JSON接口、缓存、复制以及更多企业级功能。 1. 分页原理: 在Solr中,分页主要通过`start`和`rows`参数来实现。`start`参数定义了从哪个文档开始返回结果,`...

Global site tag (gtag.js) - Google Analytics