`

利用solrJ进行检索

    博客分类:
  • solr
阅读更多

solrJ可以看成是solr的java版客户端,提供基本的索引维护、检索等功能。

 

solrJ和solr服务端有两种“沟通”方式:

第一,利用http进行通信。

第二,直接访问solrCore(solr配置文件、索引文件等),不需要http通信(without http)。

solrJ的SolrServer类结构如下图所示:

EmbeddedSolrServer是第二种方式,CommonsHttpSolrServer,LBHttpSolrServer是第一种方式,

其中LBHttpSolrServer是在CommonsHttpSolrServer的基础上提供了负载均衡的功能(load Balanced)。

在很多应用场景下,我们基本都会选择CommonsHttpSolrServer(LBHttpSolrServer)的方式。最近笔者有这样一个需求,在异构平台上,有多种语言开发的系统都需要对基础数据进行检索,如果每个系统都针对性的开发一个客户端,主要缺陷是紧耦合。因此笔者考虑在solr的基础上开发一套标准的webService接口发布服务,如果在solrCore的基础上进行调整,调整量太大,如果借助solrJ的CommonsHttpSolrServer与solrServer进行沟通,那么就会多走一次http。最后发现EmbeddedSolrServer可以解决这个问题。

然后目前EmbeddedSolrServer也有一些问题需要处理,例如:multiCore、load Balanced等。

 

下面我们从检索入手,初步了解solrJ的使用方法。

第一步:建立solrJ客户端的“通讯员”(CommonsHttpSolrServer)

SolrServer server = new CommonsHttpSolrServer( url );

 

第二步:检索

方式一:借助SolrRequestParsers解析“检索字符串”进行检索

public void query01(String queryString) {
        SolrParams solrParams = SolrRequestParsers
                .parseQueryString(queryString);
        try {
            QueryResponse rsp = solr.query(solrParams);
            List<PatentBean> results = rsp.getBeans(PatentBean.class);
            for (PatentBean bean : results)
                System.out.println(bean.toString());
        } catch (SolrServerException e) {
            e.printStackTrace();
        }
    }

queryString:String queryString = "q=ti:汽车&version=2.2&start=0&rows=10&indent=on";

这种方式简单,但是在应用中通过拼接字符串是比较憋足的,所以这种方式应用较少。

注意:

List<PatentBean> results = rsp.getBeans(PatentBean.class);Bean这种方式,不管索引维护,还是检索都十分方便。

 

方式二:借助ModifiableSolrParams对象接收查询条件进行检索

public void query02(String queryString) {
        ModifiableSolrParams solrParams = new ModifiableSolrParams();
        solrParams.add("q", queryString);
        solrParams.add("start", "0");
        solrParams.add("rows", "10");
        try {
            QueryResponse rsp = solr.query(solrParams);
            List<PatentBean> results = rsp.getBeans(PatentBean.class);
            for (PatentBean bean : results)
                System.out.println(bean.toString());
        } catch (SolrServerException e) {
            e.printStackTrace();
        }
    }

这种方式和第一种类似,如果第一种方式用个StringBuilt接收参数,那么就没什么两样了! 

 

方式三:借助solrQuery对象接收查询条件进行检索

public void query02(String queryString) {
        SolrQuery query = new SolrQuery();
        query.setQuery(queryString);
        query.setStart(0);
        query.setRows(10);
        QueryResponse rsp;
        try {
            rsp = solr.query(query);
            List<PatentBean> results = rsp.getBeans(PatentBean.class);
            for (PatentBean bean : results)
                System.out.println(bean.toString());
        } catch (SolrServerException e) {
            e.printStackTrace();
        }
    }

添加高亮效果:

query.setHighlight(true).setHighlightSnippets(1);
query.setParam("hl.fl", "ti");

 

使用EmbeddedSolrServer进行检索

创建EmbeddedSolrServer对象,如下:

private static CoreContainer.Initializer initializer = null;
    private static CoreContainer coreContainer = null;
    private static EmbeddedSolrServer server = null;
    static {
        try {
            System.setProperty("solr.solr.home", "D:/solrHome/example/solr02");
            initializer = new CoreContainer.Initializer();
            coreContainer = initializer.initialize();
            server = new EmbeddedSolrServer(coreContainer, "");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

 参考:

http://wiki.apache.org/solr/SolJava

http://wiki.apache.org/solr/Solrj

分享到:
评论

相关推荐

    SolrJ需要的jar包

    SolrJ是Apache Solr官方提供的Java客户端库,它使得Java开发者能够...通过正确地引入和配置这些jar包,你可以利用SolrJ的强大功能,在Java应用中构建高性能的全文搜索和分析解决方案,提升大数据处理的效率和灵活性。

    solr-solrj 5.0.0 demo

    Solr-Solrj 5.0.0 是一个用于与Apache Solr进行交互的Java客户端库。在本文中,我们将深入探讨Solr-Solrj的...在实际项目中,开发者还应关注性能调优、错误处理以及与其它系统的集成,以充分利用Solr-Solrj提供的功能。

    solr配置和solrj使用(demo)

    ### Solr配置与SolrJ使用详解 #### 一、Solr简介 ...通过以上步骤,我们可以成功地安装配置Solr,并利用SolrJ进行文档的索引和查询操作。这对于构建基于全文搜索的应用程序来说是非常重要的基础。

    Solrj 中文教程

    - **6.4 Cache hit rate(缓存命中率)**:提高缓存利用率的方法。 - **6.5 Explicit Warming of Sort Fields**:对排序字段进行显式预热。 - **6.6 Optimization Considerations**:整体优化策略。 - **6.7 Updates...

    人工智能-项目实践-搜索引擎-基于solrj开发solr主从搜索引擎服务的dubbo组件

    2. 使用Solrj进行索引构建:编写Java代码,利用Solrj的API将数据导入Solr索引库,支持批量导入和增量导入。 3. 创建Dubbo服务:定义Solr搜索服务的接口,实现服务的业务逻辑,然后在服务提供者侧注册该服务。 4. ...

    Solrj and Solr and LDAP and SearchEngine

    Solrj是Apache Solr的一个Java客户端库,用于与Solr服务器进行交互。它提供了丰富的API,使得开发人员可以方便地执行索引、查询、配置和管理Solr实例。Solrj简化了Solr的集成工作,例如在Java应用中添加或更新文档,...

    solr全文检索

    同时,你也会了解如何使用SolrJ进行删除操作,这可能包括删除单个文档或根据条件批量删除。此外,SolrJ还支持高级功能,如事务处理、实时更新和复杂查询。 性能优化是任何大型搜索引擎项目的关键部分。在提供的资料...

    solr-config_solrj-demo.rar_DEMO_solr_solr的j

    总之,"solr-config_solrj-demo.rar_DEMO_solr_solr的j"这个DEMO是一个全面了解和实践Solr配置及SolrJ使用的宝贵资源,它将引导你逐步掌握如何在实际项目中有效地运用Solr进行全文检索和数据分析。通过深入学习和...

    人工智能-项目实践-检索系统-吧唧吧唧外卖系统 检索 系统

    我们可以利用Spring Boot框架来快速构建服务,使用Elasticsearch Java API与搜索引擎交互,同时,SolrJ或者Nest(用于Elasticsearch)等库可以帮助简化与搜索引擎的对接。 此外,系统的前端部分也需要考虑。用户...

    UpdateSolrField.rar

    在Solr中,索引是存储和检索信息的基础,而Solrj库提供了一种方便的方式来与Solr服务器通信,执行如添加、删除和更新文档等操作。以下是对"UpdateSolrField.java"可能包含的代码及其相关知识点的详细解释: 1. **...

    solr全文检索环境搭建

    下面将详细介绍如何进行Solr全文检索环境的搭建。 **1. 安装Java运行环境** 首先,由于Solr是用Java编写的,所以需要在你的机器上安装Java Development Kit (JDK)。确保你的系统环境变量配置正确,可以通过运行`...

    阿里巴巴爬取和检索demo示例

    总之,这个阿里巴巴爬取和检索的demo项目,不仅展示了如何利用Python进行网页爬取,还演示了如何利用Solr构建高效的数据检索系统。这对于学习和掌握这两项技术,以及提升大数据处理能力具有很大的参考价值。

    solr全文检索+IK分词器

    IK分词器是针对中文的全文检索优化工具,其主要任务是对中文文本进行分词,将连续的汉字序列拆分为有意义的词汇。IK分词器具有以下特点: 1. **灵活的插件架构**:IK支持自定义分词策略,用户可以根据需求添加或...

    solr简单应用操作的代码部分

    以Java为例,我们可以使用SolrJ库来发送请求和处理响应: ```java SolrClient client = new HttpSolrClient("http://localhost:8983/solr/simple"); SolrQuery query = new SolrQuery(); query.setQuery("example")...

    solr在SSM框架中使用(支持中文分词查询)

    总的来说,"solr在SSM框架中使用(支持中文分词查询)"这个项目展示了如何在Java Web环境中集成Solr,利用SSM框架的优势,实现高效的全文检索功能,尤其是对中文文本的支持,这在处理中文信息量大的网站或应用中显得...

    solr-7.0.0

    描述中的“单片安装直接点击启动”意味着Solr-7.0.0提供了简单快捷的部署方式,用户只需下载解压后执行相应的启动脚本,即可快速启动Solr服务器,进行基本的搜索功能测试。 标签中提到了"redis 缓存 3.2.1",这可能...

    4.10.3 solr

    它提供了高效、可扩展的搜索和分析功能,广泛应用于企业级的信息检索系统。在版本 4.10.3 中,Solr 已经经过验证是可用的,这表明它在发布时已经具备了稳定性和兼容性,适合实际部署。 在了解 Solr 4.10.3 的具体...

    Solr开发指南.pdf

    - SolrJ索引维护:利用SolrJ进行数据的添加、删除和更新,确保索引的实时性。 - 数据导入处理器:使用DataImportHandler(DIH)可以从数据库或其他数据源导入数据到Solr。 - 搜索语法:学习Solr的查询语法,如标准...

    apache-solr-3.5.0.jar

    4. **创建索引**:利用SolrJ库,你可以编写Java代码来创建索引。这通常涉及连接到Solr服务器,创建索引文档,然后提交到服务器。 5. **执行查询**:同样使用SolrJ,可以编写查询语句,发送到Solr服务器,获取结果集...

    Java搜索服务Solr操作指南.pdf

    Solr是一个独立的基于全文检索的企业级搜索应用服务器,它支持通过HTTP利用XML将文档加载到搜索集合中,用户可以通过HttpGet操作发送查找请求,并得到搜索的返回结果。在Java后台开发中,Solr通过SolrJ客户端库与...

Global site tag (gtag.js) - Google Analytics