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


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐