文档章节

solr检索

west_coast
 west_coast
发布于 2017/08/08 15:22
字数 851
阅读 23
收藏 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
粉丝 5
博文 138
码字总数 40826
作品 0
济南
程序员
私信 提问
加载中

评论(0)

Solr全文检索引擎配置及使用方法

介绍 Solr是一款开源的全文检索引擎,基于lucene。拥有完善的可配置功能界面。具有丰富的查询语言,可扩展,可优化。 下载安装 进入solr官网下载包(这里我使用的版本是8.0) http://www.apa...

osc_r590b6ja
2019/05/28
4
0
理解Solr缓存及如何设置缓存大小

文献地址:http://wangdg.com/understanding-and-tuning-solr-cache/ 理解Solr缓存及如何设置缓存大小 为了得到最好的检索性能,Solr会在内存中缓存不同的数据: Result Set: 检索结果 Filt...

osc_fs15pkda
2018/08/14
2
0
zhoudong/springboot-solr

springboot-solr 一、项目介绍 Springboot2.1+Solr7.5搭建的企业级搜索平台,项目目前支持文档内容和数据库检索,已经集成分词技术。支持文档内容检索类型包含:pdf、doc、docx、ppt、pptx、...

zhoudong
2018/12/10
0
0
Lucene、Solr、ElasticSearch、hibernate-search四部曲

【前言】 从前年的时候,我都在心里有个想法。我想自己做一套搜索功能。在心里我是这么想的: 1、有个资源信息库,供我查询,这个资源库可能包含各种途径生成的统一格式的数据库。 2、查询时...

Red_Ant_hoyl
01/31
0
0
基于Solr搜索服务器的全文检索

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

旗舰
2013/12/20
246
0

没有更多内容

加载失败,请刷新页面

加载更多

IntelliJ 安装 Python 插件

运行 IntelliJ,然后在 IntelliJ 的设置中找到 插件。 然后在插件中搜索 Python 如果你没有安装的话,你应该是没有办法找到的。 你可以选择搜索 MarketPlace 选择官方的插件进行安装就可以了...

honeymoose
31分钟前
8
0
记一次element ui table 数据改变UI没渲染的坑

我要根据外界的值来判断我显示的table是单选还是多选,但是props的值变了UI却一直没什么反应,后来采用了强制刷新,在组件上加了一个:key= XXX,这个key根据外界的值得变化而变化,问题解决...

osc_5p8bxoq2
32分钟前
14
0
ASP.NET Core MVC如何上传文件及处理大文件上传

用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MV...

osc_yq7pxbpa
32分钟前
18
0
ASP.NET Core MVC如何上传文件及处理大文件上传

用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发ASP.NET Core MV...

osc_dihgscoq
34分钟前
15
0
马斯克的宇宙飞船爆炸了!但不会影响SpaceX的载人发射

  该炸的 Starship 原型机总是会炸的,该进行的载人任务也总是会发射的。   承载着 SpaceX 未来星际旅行梦想的 Starship 宇宙飞船原型机再一次在测试中以全部炸毁收场。      但需要...

osc_35ne77sz
35分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部