码迷,mamicode.com
首页 > 其他好文 > 详细

Solr基本操作

时间:2019-03-07 15:58:17      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:空格   request   ...   使用   排序   config   script   sort   创建   

/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,设置格式前缀和后缀。

 技术图片

Solr基本操作

标签:空格   request   ...   使用   排序   config   script   sort   创建   

原文地址:https://www.cnblogs.com/guanghe/p/10489913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!