Solr原理

来源:互联网 发布:智能家居网络拓扑图 编辑:程序博客网 时间:2024/05/24 07:09
Solr原理

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


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

一个典型的Add请求报文

<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> 

一个典型的搜索结果报文:

<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">2007-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> 

关于solr的详细使用说明,请参考
http://wiki.apache.org/solr/FrontPage