Solr搜索引擎一般是只会进行增删查,对于Solr的数据结构,可以理解为类似MongoDB的类型的数据库。
与MonogoDB的Schema Free不同。
Solr还是需要自己定义字段,并且做一些设置的。
而Solr一般在修改索引的时候,会选择全量更新,所以一般不会有单条索引的更新操作。
SolrJ添加索引:
public class SolrJAdd { public static void main(String[] args) { String urlString = "http://localhost:8983/solr"; SolrServer solr = new HttpSolrServer(urlString); SolrInputDocument document = new SolrInputDocument(); document.addField("id", "552199"); document.addField("name", "Gouda cheese wheel"); document.addField("price", "49.99"); document.addField("weight", 147); //add an array field 针对 multivalue字段 String[] features = {"yellow","salty","hard"} ; document.addField("features", features); try { UpdateResponse response = solr.add(document); // Remember to commit your changes! solr.commit(); System.out.println("commit!"); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
SolrJ删除索引
public class SolrJDelete { public static void main(String[] args) { String urlString = "http://localhost:8983/solr"; SolrServer solr = new HttpSolrServer(urlString); try { //删除查询到的索引信息 solr.deleteByQuery("id:552199"); solr.commit(true, true); System.out.println("delete success!"); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
SolrJ查询索引:
public class SolrJSearcher { public static void main(String[] args) throws SolrServerException { String urlString = "http://localhost:8983/solr"; HttpSolrServer solr = new HttpSolrServer(urlString); SolrQuery query = new SolrQuery(); //添加查询 query.setQuery("cat:music"); //添加过滤条件 query.addFilterQuery("price:[50 TO 400]"); // 排序 query.addSort("id", ORDER.asc); // 分页:start开始页,rows每页显示记录条数 query.setStart(0); query.setRows(20); // 设置高亮 query.setHighlight(true); // 开启高亮组件 query.addHighlightField("name");// 高亮字段 query.setHighlightSimplePre("<font color='red'>"); // 标记,高亮关键字前缀 query.setHighlightSimplePost("</font>"); QueryResponse response = solr.query(query); SolrDocumentList docs = response.getResults(); System.out.println("文档个数:" + docs.getNumFound()); System.out.println("查询时间:" + response.getQTime()); for (SolrDocument doc : docs) { System.out.println(doc.getFieldNames()); System.out.println("id: " + doc.getFieldValue("id")); System.out.println("price: " + doc.getFieldValue("price")); System.out.println("name: " + doc.getFieldValue("name")); System.out.println(); } } }
SolrJ Facet查询:
public class SolrJFacetSearch { public static void main(String[] args) { String urlString = "http://localhost:8983/solr"; SolrServer solr = new HttpSolrServer(urlString); SolrQuery query = new SolrQuery(); //Facet为solr中的层次分类查询 //分片信息 query.setFacet(true) .setQuery("*:*") .setFacetMinCount(1) .setFacetLimit(5)//段 //.setFacetPrefix("electronics", "cat") .setFacetPrefix("cor")//查询manu、name中关键字前缀是cor的 .addFacetField("manu") .addFacetField("name");//分片字段 try { QueryResponse response = solr.query(query); // 输出查询结果集 SolrDocumentList list = response.getResults(); System.out.println("Query result nums: " + list.getNumFound()); for (int i = 0; i < list.size(); i++) { //SolrDocument System.out.println(list.get(i)); } System.out.println("All facet filed result: "); // 输出分片信息 List<FacetField> facets = response.getFacetFields(); for (FacetField facet : facets) { System.out.println(facet); List<Count> facetCounts = facet.getValues(); for (FacetField.Count count : facetCounts) { // 关键字 - 出现次数 System.out.println(count.getName() + ": " + count.getCount()); } } System.out.println("Search facet [name] filed result: "); // 输出分片信息 FacetField facetField = response.getFacetField("name"); List<Count> facetFields = facetField.getValues(); for (Count count : facetFields) { // 关键字 - 出现次数 System.out.println(count.getName() + ": " + count.getCount()); } } catch (SolrServerException e) { e.printStackTrace(); } } }
Refer to:http://www.blogjava.net/hoojo/archive/2011/10/21/361747.html
相关推荐
主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询
SolrJ 的 Facet 查询总结 Facet 查询是 Solr 的高级搜索功能之一,可以给用户提供更友好的搜索体验。在搜索关键字的同时,能够按照 Facet 的字段进行分组并统计。下面是对 SolrJ 的 Facet 查询的总结: 一、Facet ...
solrj工具类封装,包括条件批量查询,批量增删改,分段修改。
Solr-Solrj是Apache Lucene项目下的一个子项目,专门为Apache Solr搜索引擎提供Java客户端库。Solr是一款强大的全文检索服务器,而Solrj则是与之交互的Java API,使得开发人员能够轻松地在Java应用程序中集成Solr的...
SolrJ是Apache Solr项目的Java客户端库,它为与Solr服务器进行交互提供了便利的API。这个压缩包包含了两个版本的SolrJ库:solr-solrj-4.10.3.jar和solr-solrj-5.0.0.jar。这两个版本的差异主要在于对Solr服务器的...
Solr-Solrj 5.0.0 是一个用于与Apache Solr进行交互的Java客户端库。在本文中,我们将深入探讨Solr-Solrj的使用、功能及其与自建Solr服务的集成,特别是涉及到中文分词的场景。 Apache Solr是一款流行的开源全文...
SolrJ是Apache Solr官方提供的Java客户端库,它使得在Java应用程序中与Solr搜索引擎进行交互变得简单。这个压缩包文件包含了SolrJ运行所必需的一些关键库,包括JUnit测试框架、Commons IO和Commons Logging。接下来...
SolrJ是Apache Solr官方提供的Java客户端库,它使得在Java应用程序中与Solr进行交互变得简单。这个“solrj使用教程”很可能是为了帮助开发者了解如何使用SolrJ来连接、查询和管理Solr索引。下面将详细介绍SolrJ的...
SolrJ是Apache Solr官方提供的Java客户端库,它使得在Java应用程序中与Solr搜索引擎进行交互变得简单。Solr是一个高性能、可扩展的企业级全文搜索引擎,广泛用于内容索引和搜索。SolrJ提供了丰富的API,允许开发者...
SolrJ 6.3.0 是一个针对 Apache Solr 的 Java 客户端库,它使得在 Java 应用程序中与 Solr 服务器进行交互变得更加便捷。Solr 是一个流行的开源搜索引擎,用于处理和索引大量文本数据,提供高效、可扩展的全文搜索...
### Solr配置与SolrJ使用详解 #### 一、Solr基本安装与配置 **1. 下载Solr** - **步骤说明**: 从Apache官方镜像站点下载Solr 1.4.1版本。 - **操作详情**: 访问链接`http://apache.etoak.com/lucene/solr/`,...
SolrJ是Apache Solr官方提供的Java客户端库,它使得Java开发者能够轻松地与Solr搜索引擎进行通信,执行查询、索引文档等操作。SolrJ的使用是大数据环境中实现高效全文检索和数据分析的关键组件。在Java项目中,正确...
solrJ是Java连接solr进行查询检索和索引更新维护的jar包。
Solr,全称为Apache Solr,是一款开源的全文搜索引擎,被广泛应用于企业级搜索解决方案中。它基于Lucene库,提供了高效、可扩展的搜索和分析能力。在处理多表join查询时,传统的关系型数据库如MySQL等通常能很好地...
【课程大纲】第01讲 solr5简介第02讲 solr5之Schema第03讲 solr5之Solrconfig第04讲 solr5单机安装与配置第05讲 solrj基础(一)第06讲 solrj基础(二)第07讲 solrj之SolrBean第08讲 solrj语法详解第09讲 Solrj之...
solr-solrj-4.9.0.jar
solr-solrj-4.10.3.jar。
### Solrj 中文教程知识点概览 #### 一、企业搜索引擎方案选型与Solr简介 ##### 1.1 企业搜索引擎方案选型 在选择企业级搜索引擎时,主要...- **7.1 出现乱码或者查不到结果的排查方法**:解决常见问题的方法和步骤。
solr-solrj-4.4.0.jar