转自: http://www.cnblogs.com/huangfox/archive/2012/02/13/2348949.html
solrJ可以看成是solr的java版客户端,提供基本的索引维护、检索等功能。
solrJ和solr服务端有两种“沟通”方式:
第一,利用http进行通信。
第二,直接访问solrCore(solr配置文件、索引文件等),不需要http通信(without http)。
solrJ的SolrServer类结构如下图所示:
EmbeddedSolrServer是第二种方式,CommonsHttpSolrServer,LBHttpSolrServer是第一种方式,
其中LBHttpSolrServer是在CommonsHttpSolrServer的基础上提供了负载均衡的功能(load Balanced)。
在很多应用场景下,我们基本都会选择CommonsHttpSolrServer(LBHttpSolrServer)的方式。最近笔者有这样一个 需求,在异构平台上,有多种语言开发的系统都需要对基础数据进行检索,如果每个系统都针对性的开发一个客户端,主要缺陷是紧耦合。因此笔者考虑在solr 的基础上开发一套标准的webService接口发布服务,如果在solrCore的基础上进行调整,调整量太大,如果借助solrJ的 CommonsHttpSolrServer与solrServer进行沟通,那么就会多走一次http。最后发现EmbeddedSolrServer 可以解决这个问题。
然后目前EmbeddedSolrServer也有一些问题需要处理,例如:multiCore、load Balanced等。
下面我们从检索入手,初步了解solrJ的使用方法。
第一步:建立solrJ客户端的“通讯员”(CommonsHttpSolrServer)
SolrServer server = new CommonsHttpSolrServer( url );
|
第二步:检索
方式一:借助SolrRequestParsers解析“检索字符串”进行检索
public void query01(String queryString) {
SolrParams solrParams = SolrRequestParsers
.parseQueryString(queryString);
try {
QueryResponse rsp = solr.query(solrParams);
List<PatentBean> results = rsp.getBeans(PatentBean. class );
for (PatentBean bean : results)
System.out.println(bean.toString());
} catch (SolrServerException e) {
e.printStackTrace();
}
}
|
queryString:String queryString = "q=ti:汽车&version=2.2&start=0&rows=10&indent=on";
这种方式简单,但是在应用中通过拼接字符串是比较憋足的,所以这种方式应用较少。
注意:
List<PatentBean> results = rsp.getBeans(PatentBean.class);Bean这种方式,不管索引维护,还是检索都十分方便。
方式二:借助ModifiableSolrParams对象接收查询条件进行检索
public void query02(String queryString) {
ModifiableSolrParams solrParams = new ModifiableSolrParams();
solrParams.add( "q" , queryString);
solrParams.add( "start" , "0" );
solrParams.add( "rows" , "10" );
try {
QueryResponse rsp = solr.query(solrParams);
List<PatentBean> results = rsp.getBeans(PatentBean. class );
for (PatentBean bean : results)
System.out.println(bean.toString());
} catch (SolrServerException e) {
e.printStackTrace();
}
}
|
这种方式和第一种类似,如果第一种方式用个StringBuilt接收参数,那么就没什么两样了!
方式三:借助solrQuery对象接收查询条件进行检索
public void query02(String queryString) {
SolrQuery query = new SolrQuery();
query.setQuery(queryString);
query.setStart( 0 );
query.setRows( 10 );
QueryResponse rsp;
try {
rsp = solr.query(query);
List<PatentBean> results = rsp.getBeans(PatentBean. class );
for (PatentBean bean : results)
System.out.println(bean.toString());
} catch (SolrServerException e) {
e.printStackTrace();
}
}
|
添加高亮效果:
query.setHighlight( true ).setHighlightSnippets( 1 );
query.setParam( "hl.fl" , "ti" );
|
使用EmbeddedSolrServer进行检索
创建EmbeddedSolrServer对象,如下:
private static CoreContainer.Initializer initializer = null ;
private static CoreContainer coreContainer = null ;
private static EmbeddedSolrServer server = null ;
static {
try {
System.setProperty( "solr.solr.home" , "D:/solrHome/example/solr02" );
initializer = new CoreContainer.Initializer();
coreContainer = initializer.initialize();
server = new EmbeddedSolrServer(coreContainer, "" );
} catch (Exception e) {
e.printStackTrace();
}
}
|
参考:
相关推荐
在这个"solr入门java工程"中,我们将探讨如何使用Java客户端与华为FusionInsight SolrTest进行交互,以及如何在SolrCloud模式下进行分布式搜索。 首先,让我们了解Solr的基本概念。Solr的核心功能是提供高效的全文...
- **索引**: Solr通过建立倒排索引来实现快速全文检索。倒排索引是一种数据结构,将每个词对应到包含该词的文档列表,大大提升了搜索效率。 - **Core**: Core是Solr的基本工作单元,每个Core可以独立地处理请求,...
接下来,我们要学习如何使用SolrJ,这是一个Java库,用于与Solr服务器进行通信。SolrJ提供了丰富的API,使得开发者可以方便地创建、更新和删除索引,以及执行查询操作。例如,你可以使用SolrJ创建一个SolrClient实例...
【Solr入门】 - Schema配置:Schema是Solr的核心配置之一,用于定义字段类型和字段,影响索引和搜索行为。 - 安装中文分词器:为了支持中文搜索,需要安装如IK分词器这样的插件。 - 自定义业务系统Field:根据业务...
尤其对于那些想要深入理解和掌握Solr在企业级信息检索和管理中应用的技术人员,这份教程将是一个宝贵的资源。由于内容非常丰富,对Solr的每个知识点都有详细的说明和操作示例,非常适合初学者入门,以及对进阶用户...
- `solrj`:提供了一个 Java API,用于开发人员与 Solr 进行交互。 - `solrconfig.xml` 和 `schema.xml`:这两个文件是 Solr 的核心配置文件,分别控制了索引行为和服务配置。 - `data` 和 `logs`:分别存放索引...
本文将详细介绍如何进行Solr的搭建和入门。 1. **环境准备** 在开始搭建之前,确保你的系统中已经安装了Java Development Kit (JDK)。Solr运行在Java环境中,所以必须先安装JDK,且版本至少为1.8。你可以通过官方...
### Solr入门指南知识点解析 #### 一、概述(Overview) **Solr** 是一个高性能、基于Lucene的全文搜索引擎,被广泛应用于企业级搜索应用之中。本指南旨在通过一个示例模式(schema)以及样本数据来介绍Solr的基本...
为了更好地利用 Solr,你需要理解其核心概念,如集合(Core)、索引、查询API以及SolrJ(Java 客户端库),这些组件共同构成了 Solr 应用的基础。SolrJ 提供了与 Solr 服务器交互的 Java API,使得在 Java 应用中...
此外,Solr 提供了丰富的 API,包括 Java 的 SolrJ,使得开发者可以方便地在应用程序中集成 Solr 功能。 总的来说,Solr 是一个功能强大的搜索解决方案,适合需要高效全文搜索的企业级应用。其与 Lucene 的关系类似...
Solr的核心功能包括全文检索、命中高亮、结果排序、 faceted search(分面搜索)以及拼写纠错等。 一、Solr的使用入门 1. 安装与启动:首先,你需要从Apache Solr官方网站下载最新版本的Solr,解压后找到bin目录下...
- **社区活跃**:Solr拥有一个庞大的开发者社区,提供了丰富的文档、教程和论坛支持,方便新手入门和解决问题。 #### 七、结语 综上所述,Solr作为一个成熟稳定的开源搜索引擎,不仅提供了丰富的功能,还具有良好的...
8、通过Solr后台管理界面对索引进行CRUD高亮过滤排序分页 9、通过Solrj实现索引的添加更新 10、通过Solrj实现索引的删除 11、索引的检索_过滤_高亮等操作 12、项目实战应用 13、Solr知识点总结 14、ElasticSearch...
当数据量达到TB或PB级的时候,传统关系型数据型已力不从心。...课时32:Spring集成Solrj之入门操作 课时33:Spring集成Solrj之高级操作 课时34:高亮查询功能开发之一 课时35:高亮查询功能开发之二 课时36:课程总结