SolrJ 常用增删查
程序员文章站
2022-04-04 14:14:15
...
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
推荐阅读
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八)
-
MySQL增删改查语句
-
python cx_Oracle的基础使用方法(连接和增删改查)
-
关于小程序云开发数据库的增删改查操作
-
sql server连接oracle并实现增删改查
-
python中flask接口的增删查改
-
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
-
abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九)
-
Django 笔记(六)mysql增删改查
-
Python面向对象之类和对象属性的增删改查操作示例