solrJ客户端的使用

一:solr的通用知识:

添加:添加一个json格式的文件就可以。
修改:在solr中没有update,只需要添加一个新的文档,要求文档id和被修改文档的id一致。原理是先删除后添加。
删除:使用xml格式。
删除两种方法:
1、根据id删除:
<delete>
<id>test001</id>
</delete>
<commit/>
2、根据查询删除:
<delete>
<query>*:*</query>
</delete>

二:solrJ客户端的使用
1:添加maven依赖:(可以根据自己的solr的版本选择solrJ的版本)

    <!-- solr客户端的依赖 -->
    <!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
    <dependency>
        <groupId>org.apache.solr</groupId>
        <artifactId>solr-solrj</artifactId>
        <version>4.10.3</version>
    </dependency>

测试代码:

package solrTest;

import java.util.HashMap;

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.junit.Test;

public class SolrTest {
    @Test
    public void addDocument() throws Exception {
        //创建一连接
        SolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr");
        //创建一个文档对象
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", "test001");
        document.addField("name", "测试商品2");
        //把文档对象写入索引库
        solrServer.add(document);
        //提交
        solrServer.commit();
    }

    @Test
    public void deleteDocument() throws Exception {
        //创建一连接
        SolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr");
        //solrServer.deleteById("test001");
        solrServer.deleteByQuery("*:*");
        solrServer.commit();
    }

    @Test
    public void queryDocument() throws Exception {
        SolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr");
        //创建一个查询对象
        SolrQuery query = new SolrQuery();
        //设置查询条件
        query.setQuery("*:*");
        query.setStart(0);
        query.setRows(50);
        //执行查询
        QueryResponse response = solrServer.query(query);
        //取查询结果
        SolrDocumentList solrDocumentList = response.getResults();
        System.out.println("共查询到记录:" + solrDocumentList.getNumFound());
        for (SolrDocument solrDocument : solrDocumentList) {
            System.out.println(solrDocument.get("id"));
        }
    }
}

solr的搜索语句:对于solr的的多条件查询跟数据库的查询是很类似的,也是一些条件的拼接
下面给出实例代码:

         @Test
        public void queryProduct(String productType,String color, Float minPrice, Float maxPrice) throws SolrServerException {  

            SolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr");
            // 创建查询对象  
            SolrQuery solrQuery = new SolrQuery();  

            // 创建组合条件串  
            StringBuilder params = new StringBuilder("productType:" + productType);  

            // 组合商品颜色条件  
            if (color != null) {  
                params.append(" AND color:" + color);  
            }  

            // 组合价格区间条件  
            if (minPrice.intValue() != 0 || maxPrice != 0) {  
                params.append(" AND spPrice:[" + minPrice + " TO "  
                        + maxPrice + "]");  
            }  

            solrQuery.setQuery(params.toString());  

            // 执行查询并获取查询数据  
            QueryResponse queryResponse = solrServer.query(solrQuery);  
            //List<Product> products = queryResponse.getBeans(Product.class);  
            SolrDocumentList solrDocumentList = queryResponse.getResults();

            System.out.println("共查询到记录:" + solrDocumentList.getNumFound());
            for (SolrDocument solrDocument : solrDocumentList) {
                System.out.println(solrDocument.get("id"));
            }
        }  

题外话:如果项目中使用到了solr,一般项目是比较大的,对性能也要求也比较高,还有可能会有多端的使用,有必要把solr的一些服务进行独立开发,给项目留出接口供调用,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值