基本信息:
版本: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;
相关推荐
在处理查询结果时,`SolrDocument`对象封装了匹配的文档信息,可以通过字段名获取值。 总的来说,Solr-Solrj 5.0.0是Java开发者与Solr集成的有力工具,尤其在处理中文文本时,通过合理的配置和使用分词器,可以实现...
solrj工具类封装,包括条件批量查询,批量增删改,分段修改。
它提供了对 Lucene 库的封装,Lucene 是 Solr 的基础,用于实现高效的全文检索。 2. **solr-solrj-6.3.0.jar**:这个就是 SolrJ 的库文件,提供了与 Solr 服务器通信的接口和类。开发者可以使用这个库来创建 Solr ...
Java整合Solr5.0的过程中,SolrJ是Java客户端库,用于与Solr服务器进行交互,提供了方便的API来执行各种操作。本篇文章将详细阐述如何使用SolrJ进行索引管理和查询。 首先,集成SolrJ需要将相应的依赖库引入项目。...
SolrJ是Apache Solr官方提供的Java客户端库,它使得在Java应用程序中与Solr搜索引擎进行交互变得简单。这个压缩包文件包含了SolrJ运行所必需的一些关键库,包括JUnit测试框架、Commons IO和Commons Logging。接下来...
SolrJ封装了所有的网络通信细节,提供了丰富的API来执行各种Solr操作。 **SolrJ的主要功能** 1. **索引操作**:SolrJ允许开发者创建和更新Solr文档,将数据高效地导入到索引中。它支持批量提交,可以显著提高索引...
其中,Solr服务器的核心功能如索引存储、查询处理、请求处理器和响应生成器都封装在这个JAR文件里。此外,它还包含了配置文件和示例文档,帮助用户快速启动和配置Solr服务器。 2. `apache-solr-solrj-3.5.0.jar`: ...
- `org.apache.solr.client.solrj.response.QueryResponse`:封装查询响应结果的类。 - `org.apache.solr.common.SolrDocumentList`:存储文档列表的容器。 - `org.apache.solr.common.SolrDocument`:表示单个文档...
SolrJ封装了与Solr服务器通信的细节,让开发者可以专注于业务逻辑,而不是底层网络通信。 总之,Lucene作为基础搜索库,为全文搜索提供了强大的技术支撑,而Solr则在Lucene之上构建了一个更全面、易用的搜索平台。...
SolrJ是Apache Solr官方提供的Java客户端库,主要用于与Solr服务器进行交互,包括索引数据、查询、管理Solr核心等操作。这个库极大地简化了开发人员在Java环境中与Solr通信的过程,使得我们可以方便地在应用程序中...
- **1.5.1 1.3版本**:介绍了Solr 1.3版本的主要特性和改进之处。 - **1.5.2 1.4版本**:描述了Solr 1.4版本新增的功能,如增强的安全性设置、改进的复制机制等。 **1.6 分布式和复制Solr架构** - 描述了Solr如何...
2. SolrJ查询索引:同样,查询索引也可以通过SolrJ完成,将查询语句封装为Java对象,然后发送到Solr服务器获取结果。 综上所述,Solr是实现站内搜索的强大工具,结合SolrJ,可以让开发人员更高效地处理全文检索和...
Schema是Solr的核心组成部分之一,通过它来管理索引的数据结构。 **1.2.3 查询** Solr提供了强大的查询语言,支持复杂的查询语法,包括布尔逻辑、近似匹配、短语查询等,以满足不同类型的搜索需求。 **1.2.4 核心*...
Solr是一个基于Lucene的Java搜索引擎服务器,它封装并扩展了Lucene的功能。Solr支持层面搜索和命中高亮显示,并且能够输出包括XML、XSLT和JSON在内的多种格式。Solr易于安装和配置,并且提供了一个基于HTTP的管理...
- 使用SolrJ API可以轻松地与Solr交互,包括添加文档、执行查询等操作。 **4.2 Solrj的使用说明** - **4.2.1 AddingDatatoSolr**:通过SolrInputDocument对象添加文档。 - **4.2.2 DirectlyaddingPOJOstoSolr**:...
Solr是对Lucene的封装和扩展,提供了一个完整的搜索服务器解决方案,包括企业管理、监控和性能优化。Lucene则更专注于底层的搜索算法和索引构建,而Solr则在此基础上添加了如动态字段、管理界面、查询语言扩展等...
4. **索引数据**:使用Solr提供的API或者客户端工具,如SolrJ(Java库)或命令行工具,将需要搜索的数据导入到Solr中建立索引。索引过程可以是批量的,也可以是实时的,取决于你的数据更新频率。 5. **查询与优化**...
Solr 则是在 Lucene 的基础上进行服务器化封装,提供了更高级别的服务,包括Web界面、配置管理、集群功能等,使得部署和使用更加方便。 要安装 Solr,首先需要确保系统上已经安装了 Java 虚拟机(JVM),最低版本...
- `DocumentBuilder`:构建Solr文档对象,封装要索引的数据。 - `AnalyzerConfig`:配置分词策略,可能包含自定义的Analyzer类。 - `Indexer`:索引工具,负责将数据送入Solr服务器。 - `QueryExecutor`:执行...
Solr在其之上进行了封装,增加了分布式搜索、XML/HTTP和JSON接口、缓存、复制以及更多企业级功能。 1. 分页原理: 在Solr中,分页主要通过`start`和`rows`参数来实现。`start`参数定义了从哪个文档开始返回结果,`...