• Solr基本操作


    /update

      使用/update进行索引维护,进入Solr管理界面SolrCore下的Document下:

      我们进行更新操作可以用json和xml多种格式,这里以xml格式为例说明。先来看看界面上的几个选项:

    1、Commit Within

      commitWithin="10000" : solr在做索引的时候,每个10000(10秒)毫秒,做一次文档提交。为了方便测试也可以在Document中立即提交。

    1 <add>
    2     <doc>
    3         <field name="id">change.me</field>
    4         <field name="title">change.me</field>
    5     </doc>
    6 </add>
    7 <commit/>

    2、Overwrite

      overwrite="true":solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换。

    3、Boost

      boost是增强、促进的意思,在创建索引时设置boost值:可以针对Field设置boost,也可以针对Document设置boost值,如下:

     1 <add>
     2     <doc>
     3         <field name="id">a01</field>
     4         <field name="product_name" boost="20.0">粉刷匠</field>
     5         <field name="product_description" >我是一个粉刷匠</field>
     6     </doc>
     7     <doc boost="30.0">
     8         <field name="id">a02</field>
     9         <field name="product_name">粉刷匠</field>
    10         <field name="product_description" >我是两个粉刷匠</field>
    11     </doc>
    12 </add>
    13 <commit/>

      针对Field设置boost必须搜索时匹配到该Field在计算相关度得分时才有效,针对Document设置Field则在搜索时只要匹配到该Document的任意Field在计算相
    关度得分都有效。

      测试:如果要搜索product_description,关键字“粉刷匠”,“a02”的doc会排在前边,因为“a02”是整体设置了boost值。  

      在创建搜索时设置域的boost值:搜索匹配到的域如果boost值设置的高则计算的相关度得分就可能会高,如下:

     1 <add>
     2     <doc>
     3         <field name="id">a03</field>
     4         <field name="product_name">lucene实战</field>
     5         <field name="product_description">这是一本讲解全文检索技术的书籍</field>
     6     </doc>
     7     <doc>
     8         <field name="id">a04</field>
     9         <field name="product_name">全文检索</field>
    10         <field name="product_description" >Lucene是一个全文检索工具包</field>
    11     </doc>
    12 </add>
    13 <commit/>

      “a03”文档的product_name中有lucene,product_description中没有,“a04”文档中的product_name中没有lucene,"product_description中有lucene。product_name和product_description组合域搜索时设置product_name的boost值高点,如下:

      当product_name中匹配到重要性要比product_description高,查询结果是product_name中匹配到关键字的排在前边,如下:

    请求格式

      solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。唯一标识 Field必须有,这里使用Solr默认的id。

    增加、修改索引格式如下:

    1 <add>
    2     <doc>
    3         <field name="id">change.me</field>
    4         <field name="??" >??</field>
    5         ...
    6     </doc>
    7 </add>

    删除索引格式如下:

     1 <!--删除制定ID的索引-->
     2 <delete>
     3     <id>8</id>
     4     ...
     5 </delete>
     6 <!--删除查询到的索引数据-->
     7 <delete>
     8     <query>product_catalog_name:粉刷匠</query>
     9 </delete>
    10 <!--删除所有索引数据-->
    11 <delete>
    12     <query>*:*</query>
    13 </delete>

    /select

      Solr搜索处理器,我们可以在配置文件设置一些默认参数,conf/solrconfig.xml。

    1 <requestHandler name="/select" class="solr.SearchHandler">
    2     <!-- 设置默认的参数值,可以在请求地址中修改这些参数-->
    3     <lst name="defaults">
    4         <str name="echoParams">explicit</str>
    5         <int name="rows">10</int><!--显示数量-->
    6         <str name="wt">json</str><!--显示格式-->
    7         <str name="df">text</str><!--默认搜索字段-->
    8     </lst>
    9 </requestHandler>

      通过/select搜索索引,Solr制定一些参数完成不同需求的搜索,我们看看界面中的参数配置(这些参数也可在上边的配置文件中配置)

    1、q - 查询字符串,必须的,如果查询所有使用*:*。

    2、fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,这里的过滤条件也可以写在q中,规则都是一样的,例如:

    3、sort - 排序,格式:sort=<field name> + <desc|asc>[,<fieldname> + <desc|asc]示例:

    4、start - 分页显示使用,开始记录下标,从0开始,rows - 指定返回结果最多有多少条记录,配合start来实现分页。

    5、fl - 指定返回那些字段内容,用逗号或空格分隔多个。

    6、df-指定一个搜索Field,指定后就可以直接在“q”查询条件中输入关键字。

    7、Raw Query Parameters - 原始请求语句,类似http中get请求参数

    8、wt - (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr1.3增加的,要用通知我们,因为默认没有打开。

     9、hl - 是否高亮 ,设置高亮Field,设置格式前缀和后缀。

     

  • 相关阅读:
    文件系统操作与磁盘管理
    文件打包与压缩
    环境变量与文件查找
    Linux 目录结构及文件基本操作
    用户及文件权限管理
    基本概念及操作
    iOS 一个简单的单例
    Xcode编译Undefined symbols for architecture xxx 错误总结
    iOS 直播
    iOS8.1 编译ffmpeg和集成第三方实现直播(监控类)
  • 原文地址:https://www.cnblogs.com/guanghe/p/10489913.html
Copyright © 2020-2023  润新知