文档章节

solr检索

west_coast
 west_coast
发布于 2017/08/08 15:22
字数 851
阅读 2
收藏 0

前言

      Solr/Lucene是一个全文检索引擎,全文引擎和SQL引擎所不同的是强调部分相关度高的内容返回,而不是所有内容返回,
所以部分内容包含在索引库中却无法命中是正常现象。
      多数情况下我们建议优化分词器或者引擎其它部分达到预期检索效果。

  1. 分词器调节

    按照如下步骤进入分词器调试界面

1、选择collection

2、选择analysis菜单

3、在索引框中输入要索引的文档

4、在检索框中输入要检索的词语

5、选择需要调试的字段,这里假设要将内容索引到title字段,并且在该字段上检索

6、点击分析按钮

7、在展示出来的原文分词结果(左侧)和关键词分词结果(右侧)中对比最下面一行,若右侧分词结果的所有词在左侧都能找到,那么在AND关系的检索时能够匹配;若部分能够找到,那么在OR关系的检索中能够匹配;若完全找不到,那么无法匹配。

 

  1. 检索调节

    1. 准备数据

索引一条记录,id=1,title=中华人民共和国来做调试

  1. 直接检索无法出结果问题

直接检索中华人民共和国

 

 

从上图看(图可放大),最终检索结果被解析成了”+text:中 +text:华 +text:人 +text:民 +text:共 +text:和 +text:国”,因为我们在q的输入框中没有输入检索字段,所以solr会检索默认字段”text”,而该字段不包含我们需要的信息,所以检索无结果。

 

输入正确的字段title后,可以成功检索出来

 

 

  1. 部分匹配无法出结果问题

原文中华人民共和国分词后:中华、人民、共和国

搜索词中华解放军分词后:中华、解放军

部分匹配,我们也希望检索出来

 

从上图看(图可放大),最终检索结果被解析成了"+title:中 +title:华 +title:解放 +title:军",加号(+)标识逻辑与关系,相当于检索"title:中 AND title:华 AND title:解放 AND title:军",因此无法检索出来

 

 

 

修改默认逻辑关系(q.op=OR)为OR后,分此后的检索式加号没了,是逻辑或关系,因此能够成功检索出来。这里OR一定要大写。

 

这个默认检索关系可以通过修改schema.xml的defaultOperator进行配置
<solrQueryParser defaultOperator=”OR”/>

 

  1. 多关键字检索无法出结果问题

有时候用户会用空格输入多个关键字进行检索,如title:中华 人民 共和国

通过开启debugQuery参数,我们看到,最终检索结果被解析成了

 

+(+title:中 +title:华) +(+text:人 +text:民) +(+text:共 +text:和 +text:国)

 

 

中华是在title上检索的,后面的词都到text字段检索了

通过指定默认字段df为title,可以修正最终检索式,从上图看,修正后结果可以正常检索返回。

 

其它

    以上是一些常见数据召回问题。

    检索调优是搜索引擎使用中最复杂的过程,需要在长期实践中积累经验,同时需要了解数据情况,业务特点等多方面根据情况进行调整。

© 著作权归作者所有

共有 人打赏支持
west_coast
粉丝 0
博文 56
码字总数 14488
作品 0
济南
程序员
请教个关于 solr 索引构建的方案的问题,怎么操作比较适合正式环境?

最近搭建一个全文检索平台。最初考虑只采用lucene,然后自己写索引构建程序、检索框架等,类似osc @红薯 的方案,以前也做过比较熟悉。但有两个问题,1.比较复杂,工作量和维护量都比较大。2...

从前
2013/03/27
2.8K
4
基于Solr搜索服务器的全文检索

1:何为全文检索 全文检索是一种将文件中所有文本与检索关键词匹配的文字资料检索方法,比如我们将一本书的作者、出版日期、出版社、章节、章节内容都存于数据库中,那么我们输入任何一个词,...

旗舰
2013/12/20
0
0
Solr使用函数排序

电子商务搜索引擎http://demo.rivues.com:195中有一个功能是按照销售量排序,销售量的数据是实时统计的,检索的时候有一个功能是按照销售量来排序,这个功能用到了Solr的函数排序(Sort By F...

R3商业智能
2011/04/05
3.9K
2
Solr查询参数

solr常用查询参数 q:查询关键词。支持 AND,OR ,,?。支持多字段查询,模糊匹配。 fq:filter query,过虑查询。 sort:排序规则。默认按score排序。 start, rows:分页参数。start:开始的位...

zcl111
2016/01/30
158
0
[ solr入门 ] - 利用solrJ进行检索

[ solr入门 ] - 利用solrJ进行检索 solrJ可以看成是solr的java版客户端,提供基本的索引维护、检索等功能。 solrJ和solr服务端有两种“沟通”方式: 第一,利用http进行通信。 第二,直接访问...

飞翼
2016/12/13
6
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
32分钟前
1
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
0
0
890. Find and Replace Pattern - LeetCode

Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"abc ......

yysue
昨天
0
0
Linux | Redis

写在前面的话 常言道,不作笔记不读书。在下是深有体会啊,所以,跟我一起做下本节的笔记吧,或许多年以后,你一定会感谢今天的你。 安装 在官网的下载页 Redis Download 直接写了在Linux的安...

冯文议
昨天
1
0
NoSQL-memcached

NoSQL介绍 NoSQL叫非关系型数据库。而关系型数据库代表有MySQL。对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很...

ln97
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部