Solr服务原理。

来源:互联网 发布:辉煌seo 编辑:程序博客网 时间:2024/05/29 18:50

        Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在Solr中,用户通过向部署在servlet容器中Solr Web应用程序发送HTTP请求来启动索引和搜索。Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过HTTP以同样的方式返回响应。默认配置返回Solr的标准XML响应,也可以配置Solr的备用响应格式。

索引

        可以向Solr索引servlet传递四个不同的索引请求:

  1. add/update允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。
  2. commit告诉Solr,应该使上次提交以来所做的所有更改都可以被搜索到。
  3. optimize重构Lucene的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常的运行。优化是一个耗时较多的过程。
  4. delete可以通过id或查询来指定。按id删除将删除具有指定id的文档;按查询删除将删除查询返回的所有文档。

        要实现添加文档索引则只需要调用搜索接口以HTTP POST的方式提交XML报文。(索引接口:http://192.168.10.85:18080/solr/update),下面是添加文档的示例报文:

        注:多核心时为这个地址http://192.168.10.85:18080/solr/core0/update/

       <add>

         <doc>

            <field name = "id">TWINX2048-3200PRO</field>

            <field name = "name">CORSAIR XMS 2GB(2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail</field>

            <field name = "manu">Corsair Microsystems Inc</field>

            <field name = "cat">electronics</field>

            <field name = "cat">memory</field>

            <field name = "features">CAS latency 2,2-3-3-6 timing,2.75v,unbuffered,heat-spreader</field>

            <field name = "price">185</field>

            <field name = "popularity">5</field>

            <field name = "inStock">true</field>

         </doc>

         <doc>

            <field name = "id">VS1GB400C3</field>

            <field name = "name">CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail</field>

            <field name = "manu">Corsair Microsystems Inc</field>

            <field name = "cat">electronics</field>

            <field name = "cat">memory</field>

            <field name = "price">74.99</field>

            <field name = "popularity">7</field>

            <field name = "inStock">true</field>

         </doc>

       </add>

搜索

        要实现搜索则只需要调用搜索接口发送HTTP GET,示例:

        http:192.168.10.85:18080/solr/select?indent=on&version=2.2&q=solr&start=0&rows=10&fl=*%2Cscore&qt=standard&wt=standard

        注:多核心时为这个地址:http://192.168.10.85:18080/solr/core0/select/

        示例中,查询词“ipad”的请求被提交,要求返回10个结果。

        返回的搜素结果报文:

        <response>

           <lst name = "responseHeader">

             <int name = "status">0</int>

             <int name = "QTime">6</int>

             <lst name = "params">

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

                <str name = "start">0</str>

                <str name = "fl">*.score</str>

                <str name = "hl">true</str>

                <str name = "q">content:"faceted browsing"</str>

             </lst>

           </lst>

           <result name = "response" numFound = "1" start = "0" maxScore = "1.058217">

              <doc>

                <float name = "score">1.058217</float>

                <arr name = "all">

                   <str>http://localhost/myBlog/solr-rocks-again.html</str>

                   <str>Solr is Great</str>

                   <str>solr,lucene,enterprise,search,greatness</str>

                   <str>Solr has some really great features, like faceted browsing and replication</str>

                </arr>

                <arr name = "content">

                     <str>Solr has some really great features, like faceted browsing and replication</str>

                </arr>

                <date name = "creationDate">2017-01-07T05:04:00.000Z</date>

                <arr name = "keywords">

                     <str>solr,lucene,enterprise,search,greatness</str>

                </arr>

                <int name = "rating">8</int>

                <str name = "title">Solr is Great</str>

                <str name = "url">http://localhost/myBlog/solr-rocks-again.html</str>

              </doc>

           </result>
           <lst name = "highlighting">

               <lst name = "http://localhost/myBlog/solr-rocks-again.html">

                   <arr name = "content">

                       <str>Solr has some really great features,like<em>faceted</em><em>browsing</em> and replication</str>

                    </arr>

               </lst>

            </lst>

        </response>

原创粉丝点击