Solr API操作

简介:

1、需要在/usr/local/services/solr/solr-4.10.3/example/solr/collection1/conf的solrconfig.xml加上

 <requestHandler name="/select" class="solr.SearchHandler">

    <!-- default values for query parameters can be specified, these

         will be overridden by parameters in the request

      -->

     <lst name="defaults">

       <str name="echoParams">explicit</str>

       <int name="rows">10</int>

       <str name="df">text</str>

     </lst>

<!-- 这行代码非常重要,如果没有这行,拼写检查,是不起作用的-->    

       <arr name="last-components">    

       <str>spellcheck</str>    


以便spell能够生效


2、在/usr/local/services/solr/solr-4.10.3/example/solr/collection1/conf的schema.xml修改,加上字段,否则会报错

如:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

        

   <field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>

   <field name="name" type="text_general" indexed="true" stored="true"/>

   <field name="addr" type="text_general" indexed="true" stored="true"/>

   <field name="age" type="int" indexed="true" stored="true"/>

   <field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>


=======================================================

下面是具体的实现的方法


com.ys.controller;

com.ys.bean.Person;
org.apache.solr.client.solrj.SolrServer;
org.apache.solr.client.solrj.impl.HttpSolrServer;
org.apache.solr.common.SolrInputDocument;
org.springframework.beans.factory.annotation.;
org.springframework.web.bind.annotation.;
org.springframework.web.bind.annotation.RequestMethod;
org.springframework.web.bind.annotation.;

java.util.*;
java.util.Map.Entry;

org.apache.solr.client.solrj.SolrQuery;
org.apache.solr.client.solrj.impl.HttpSolrClient;
org.apache.solr.client.solrj.response.QueryResponse;
org.apache.solr.client.solrj.response.SpellCheckResponse;
org.apache.solr.client.solrj.response.SpellCheckResponse.Collation;
org.apache.solr.client.solrj.response.SpellCheckResponse.Correction;
org.apache.solr.common.SolrDocument;
org.apache.solr.common.SolrDocumentList;
org.apache.solr.common.SolrInputDocument;


(value = )
SolrTest {
    ()
    String ;

    ()
    String ;


    (value = , method = RequestMethod.)
    add() Exception {

        Map<String, String> map = HashMap<String, String>();
        map.put(, );
        map.put(, );
        map.put(, );
        map.put(, );
        addDocument(map, );

    }

    (value = , method = RequestMethod.)
    addbean() Exception {

        List<Person> persons = ArrayList<Person>();
        persons.add(Person(, , , ));
        persons.add(Person(, , , ));
        addDocumentByBean(persons, );

    }


    (value = , method = RequestMethod.)
    del() Exception {

        List<String> ids = ArrayList<String>();
        ids.add();
        ids.add();
        ids.add();
        deleteDocumentByIds(ids, );

    }

    (value = , method = RequestMethod.)
    search() Exception {

        getDocument();

    }

    (value = , method = RequestMethod.)
    spell() Exception {

        getSpell();

    }


    addDocument(Map<String, String> map, String core)
            Exception {
        SolrInputDocument sid = SolrInputDocument();
        (Entry<String, String> entry : map.entrySet()) {
            sid.addField(entry.getKey(), entry.getValue());
        }
        HttpSolrClient solrClient = getSolrClient(+ core);
        solrClient.add(sid);
        (solrClient);
    }

    addDocumentByBean(List<Person> persons, String core)
            Exception {
        HttpSolrClient solrClient = getSolrClient(+ core);
        solrClient.addBeans(persons);
        (solrClient);
    }


    deleteDocumentByIds(List<String> ids, String core)
            Exception {
        HttpSolrClient solrClient = getSolrClient(+ core);
        solrClient.deleteById(ids);
        (solrClient);
    }


    getDocument(String core) Exception {
        HttpSolrClient solrClient = getSolrClient(+ core);
        SolrQuery sq = SolrQuery();

        sq.set(, );

        sq.addFilterQuery();

        sq.setSort(, SolrQuery.ORDER.);

        sq.setStart();
        sq.setRows();

        sq.setHighlight();

        sq.addHighlightField();

        sq.setHighlightSimplePre();
        sq.setHighlightSimplePost();

        QueryResponse result = solrClient.query(sq);

        System..println();
        SolrDocumentList results = result.getResults();
        System..println(+ results.getNumFound() + );
        (SolrDocument solrDocument : results) {
            System..println(+ solrDocument.get());
            System..println(+ solrDocument.get());
            System..println(+ solrDocument.get());
            System..println(+ solrDocument.get());
        }

        System..println();
        List<Person> persons = result.getBeans(Person.);
        System..println(+ persons.size() + );
        (Person person : persons) {
            System..println(person);
        }
        (solrClient);
    }


    getSpell(String core) Exception {
        HttpSolrClient solrClient = getSolrClient(+ core);
        SolrQuery sq = SolrQuery();
        sq.set(, );

        sq.set(, );
        QueryResponse query = solrClient.query(sq);
        SolrDocumentList results = query.getResults();

        count = results.getNumFound();

        (count == ) {
            SpellCheckResponse spellCheckResponse = query
                    .getSpellCheckResponse();
            List<Collation> collatedResults = spellCheckResponse
                    .getCollatedResults();
            (Collation collation : collatedResults) {
                numberOfHits = collation.getNumberOfHits();
                System..println(+ numberOfHits);

                List<Correction> misspellingsAndCorrections = collation
                        .getMisspellingsAndCorrections();
                (Correction correction : misspellingsAndCorrections) {
                    String source = correction.getOriginal();
                    String current = correction.getCorrection();
                    System..println(+ current + + source);
                }
            }
        } {
            (SolrDocument solrDocument : results) {
                Collection<String> fieldNames = solrDocument.getFieldNames();

                (String field : fieldNames) {
                    System..println(+ field + + solrDocument.get(field));
                }
            }
        }

        (solrClient);
    }


    HttpSolrClient getSolrClient(String core) {
        HttpSolrClient hsc = HttpSolrClient(+ core);
        hsc;
    }


    commitAndCloseSolr(HttpSolrClient solrClient)
            Exception {
        solrClient.commit();
        solrClient.close();
    }


}




      本文转自yushiwh 51CTO博客,原文链接:http://blog.51cto.com/yushiwh/1969222,如需转载请自行联系原作者


相关文章
|
5月前
|
文字识别 小程序 安全
印刷文字识别操作报错合集之微信小程序调用API时路径总是返回不对,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
5月前
|
文字识别 前端开发 API
印刷文字识别操作报错合集之通过HTTPS连接到OCR服务的API时报错,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
5月前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之调用CreateQualityRule API时,BlockType参数为0,会报错:"blockType less than minimum",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
前端开发 JavaScript API
惊天揭秘!AJAX与Fetch API如何让你的前后端交互秒变‘神级操作’!
【7月更文挑战第15天】在Web开发中,AJAX和Fetch API革新了前后端交互,告别了表单提交带来的页面刷新。AJAX利用XMLHttpRequest实现部分页面更新,开启无刷新时代;Fetch API作为现代替代,以其简洁和Promise支持简化异步操作。从AJAX的先驱地位到Fetch API的进化,两者提升了Web应用的性能和用户体验,成为现代开发的必备技能。
59 2
|
5月前
|
搜索推荐 API UED
资源部署及场景API调用体验过程的引导与操作流畅性
资源部署及场景API调用体验过程的引导与操作流畅性
|
5月前
|
XML JSON 文字识别
印刷文字识别操作报错合集之API调用过程中报错469,是什么导致的
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
6月前
|
运维 DataWorks 数据管理
DataWorks操作报错合集之调用RegisterLineageRelation api时报错,是什么原因?
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
42 2
|
5月前
|
运维 Devops API
阿里云云效操作报错合集之直接用API调用可以使用,但是本地用Go代码调用失败,是什么导致的?
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
5月前
|
运维 Kubernetes API
阿里云云效操作报错合集之API返回的错误信息,错误码为"Operate.NoPermission",该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
5月前
|
运维 Devops API
阿里云云效操作报错合集之调用旧版API添加代码源时遇到500错误,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。