全文检索之企业级应用框架solr的使用(下)
2017-11-16 11:52
585 查看
solr是apach组织对全文检索开源项目lucene进行封装后的企业级应用框架,这里仅仅展示最简单的使用,强大的应用,请关注后期博客更新!
package com.ilike.solrj;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
/**
* SolrJ管理: 添加 修改 删除
*
* @author 桑伟东
*
*/
public class SolrJManager {
}
package com.ilike.solrj;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;
/**
* SolrJ管理: 添加 修改 删除
*
* @author 桑伟东
*
*/
public class SolrJManager {
/* * 1.添加 */ @Test public void testAdd() throws Exception { // 1.1创建单机版solrServer // String baseUrl="http://localhost:8080/solr/collection2"; String baseUrl = "http://localhost:8080/solr/collection1"; SolrServer server = new HttpSolrServer(baseUrl); // 1.2添加 // 1.2.1创建文档对象 SolrInputDocument solrInputDocument = new SolrInputDocument(); // 1.2.2向文档对象中的域添加相应的值 solrInputDocument.setField("id", "101"); solrInputDocument.setField("product_picture", "123.jpg"); solrInputDocument.setField("product_catalog_name", "幽默杂货"); solrInputDocument.setField("product_price", "28.9"); solrInputDocument.setField("product_name", "小台灯"); // 1.3保存文档对象 server.add(solrInputDocument); // 1.4提交 server.commit(); } /* * 2.删除 */ @Test public void testDelete() throws Exception { // 2.1创建单机版solrServer // String baseUrl="http://localhost:8080/solr/collection2"; String baseUrl = "http://localhost:8080/solr/collection1"; SolrServer server = new HttpSolrServer(baseUrl); // 2.2删除全部 server.deleteByQuery("*:*", 20); } /* * 3.修改 */ @Test public void testUpdate() throws Exception { // 3.1创建单机版solrServer // String baseUrl="http://localhost:8080/solr/collection2"; String baseUrl = "http://localhost:8080/solr/collection1"; SolrServer server = new HttpSolrServer(baseUrl); // 与添加一致,只要id相同,就会执行更新 } /* * 4.查询 */ @Test public void testSearch() throws Exception { // 4.1创建单机版solrServer // String baseUrl="http://localhost:8080/solr/collection2"; String baseUrl = "http://localhost:8080/solr/collection1"; SolrServer server = new HttpSolrServer(baseUrl); // 4.2创建查询对象 SolrQuery solrQuery = new SolrQuery(); // 4.3设置查询关键词 // solrQuery.set("q", "product_name:台灯"); solrQuery.setQuery("台灯"); // 4.4设置过滤条件 solrQuery.set("fq", "product_catalog_name:幽默杂货"); // 4.5设置价格区间(小于30) solrQuery.set("fq", "product_price:[* TO 30]"); // 4.6设置排序方式(从高到底) solrQuery.addSort("product_price", ORDER.asc); // 4.7设置分页 solrQuery.setStart(0); solrQuery.setRows(5); // 4.8设置默认域 solrQuery.set("df", "product_name"); // 4.9指定查询域 solrQuery.set("fl", "id,product_name"); // 4.10设置高亮 // 4.10.1打开高亮开关 solrQuery.setHighlight(true); // 4.10.2指定高亮域 solrQuery.addHighlightField("product_name"); // 4.10.3设置前缀 solrQuery.setHighlightSimplePre("<span style='color:red'>"); // 4.10.4设置后缀 solrQuery.setHighlightSimplePost("</span>"); // 4.11执行查询 QueryResponse queryResponse = server.query(solrQuery); // 4.12获取查询的文档结果集 SolrDocumentList docs = queryResponse.getResults(); // 4.12获取查询高亮的结果集,map中第一个k是id,第二个k是域名 Map<String, Map<String, List<String>>> hMap = queryResponse.getHighlighting(); // 4.13获取本次查询的总条数 Long count = docs.getNumFound(); System.out.println(count); for (SolrDocument doc : docs) { System.out.println(doc.get("id")); System.out.println(doc.get("product_picture")); System.out.println(doc.get("product_catalog_name")); System.out.println(doc.get("product_price")); System.out.println(doc.get("product_name")); System.out.println("-------------"); Map<String, List<String>> map = hMap.get(doc.get("id")); List<String> list = map.get("product_name"); System.out.println(list.get(0)); } }
}
相关文章推荐
- 使用Solr构建企业级的全文检索(一)---------开篇
- 使用Solr构建企业级的全文检索
- 使用Solr构建企业级的全文检索(四)---------写入文档
- 使用Solr构建企业级的全文检索(二)---------管理界面简介
- 使用Solr构建企业级的全文检索(三)---------Schema定义
- 使用Solr构建企业级的全文检索(二)---------管理界面简介
- 使用Solr构建企业级的全文检索(四)---------写入文档
- 使用Solr构建企业级的全文检索(一)---------开篇
- 使用Solr构建企业级的全文检索
- 使用Solr构建企业级的全文检索(三)---------Schema定义
- 使用solr搭建你的全文检索
- 全文检索(SOLR)前端应用浅析续 Rails前端分析
- 使用solr搭建你的全文检索
- 使用solr搭建你的全文检索
- 使用solr搭建你的全文检索
- 企业级搜索应用服务器Solr4.10.4部署开发详解(2)- Solr使用-创建集合表、存储、查询
- 使用solr搭建你的全文检索
- 图解全文检索SOLR的酷应用[Ajax Solr]
- 使用solr搭建全文检索
- 使用Lucene-1.3-final在web上建立全文检索应用