###环境搭建
第一步:创建一个java工程。
第二步:导入jar包。包括solrj的jar包
1、solr-solrj-4.10.3.jar
2、 solrj-lib文件夹下所有的jar包
3、 还需要\solr-4.10.3\example\lib\ext目录下的所有的jar包。

第三部:索引库使用的是 这篇文章的索引库
###实现步骤
第一步:使用Solrj中的SolrServer和服务端创建连接。单机使用HttpSolrServer,集群环境使用CloudSolrServer。
第二步:创建一个文档对象。SolrInputDocument对象。
第三步:向文档中添加域,直接调用addField方法添加,每个文档中必须 有一个id域,而且每个域的名称必须是在schema.xml中定义。
第四步:把文档对象添加到索引库中。
第五步:调用SolrServer对象的commit方法。
###代码实现
package com.sxt.solr;
import java.io.IOException;
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.SolrServerException;
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.After;
import org.junit.Test;
/**
* @author : szc
* @date 创建时间:2017年8月5日 下午9:17:27
* @version 1.0
* @parameter
* @since
* @return
*/
public class SolrTest {
//添加索引
@Test
public void testAdd() throws SolrServerException, IOException {
//创建和solr服务器的连接
String url="http://localhost:8080/solr";
SolrServer solrServer=new HttpSolrServer(url);
//创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id","solr001");
document.addField("product_name", "魅族手机");
document.addField("product_price", 3000);
solrServer.add(document);
solrServer.commit();
}
//根据id删除
@Test
public void deleteDocumentById() throws Exception{
//创建和solr服务器的连接
String url="http://localhost:8080/solr/solrCore";
SolrServer solrServer=new HttpSolrServer(url);
solrServer.deleteById("solr001");
//可以根据查询条件删除索引
// solrServer.deleteByQuery("id:solr001");
solrServer.commit();
}
//删除全部
@Test
public void deleteAll()throws Exception{
//创建和solr服务器的连接
String url="http://localhost:8080/solr/solrCore";
SolrServer solrServer=new HttpSolrServer(url);
solrServer.deleteByQuery("*:*");
solrServer.commit();
}
//更新和添加一样 略
@Test
public void testSearch() throws Exception{
//创建和solr服务器的连接
String url="http://localhost:8080/solr";
SolrServer solrServer=new HttpSolrServer(url);
//创建查询对象 SolrQuery是SolrParams 的子类
SolrQuery solrQuery = new SolrQuery();
//solrQuery.set("q", "*:*");
//solrQuery.setQuery("*:*");
//设置默认搜索域
solrQuery.set("df", "product_name");
//设置查询条件
solrQuery.setQuery("手机");
//设置过滤条件
solrQuery.addFilterQuery("product_price:[100 TO 6600]");
//设置过滤条件,下面两种方式
//query.addFilterQuery(“域名”,”条件”);
//query.setFilterQueries(“域名:条件”,”域名:条件”…);
//设置排序条件
solrQuery.setSort("product_price", ORDER.asc);
//设置分页条件
solrQuery.setStart(0);
solrQuery.setRows(10);
//设置显示的域
solrQuery.setFields("id","product_name","product_price");
solrQuery.setHighlight(true);
solrQuery.addHighlightField("product_name");
solrQuery.setHighlightSimplePre("<span style='color:red'>");
solrQuery.setHighlightSimplePost("</span>");
//执行查询
QueryResponse queryResponse = solrServer.query(solrQuery);
//取文档列表
SolrDocumentList results = queryResponse.getResults();
System.out.println("查询结果总量:"+results.getNumFound());
//遍历查询结果
for (SolrDocument solrDocument : results) {
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("product_name"));
System.out.println(solrDocument.get("product_price"));
System.out.println(solrDocument.get("product_catalog_name"));
System.out.println(solrDocument.get("product_picture"));
//key 是 id
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
//key 是 域名
Map<String, List<String>> map = highlighting.get(solrDocument.get("id"));
List<String> list = map.get("product_name");
System.out.println(list.get(0));
System.out.println("--------------");
}
}
}
本文介绍如何使用SolrJ进行Solr服务器的操作,包括建立连接、添加文档、删除文档及查询等基本功能,并提供了详细的Java代码示例。
1万+

被折叠的 条评论
为什么被折叠?



