前言
Solr/Lucene是一个全文检索引擎,全文引擎和SQL引擎所不同的是强调部分相关度高的内容返回,而不是所有内容返回,
所以部分内容包含在索引库中却无法命中是正常现象。
多数情况下我们建议优化分词器或者引擎其它部分达到预期检索效果。
-
按照如下步骤进入分词器调试界面
1、选择collection
2、选择analysis菜单
3、在索引框中输入要索引的文档
4、在检索框中输入要检索的词语
5、选择需要调试的字段,这里假设要将内容索引到title字段,并且在该字段上检索
6、点击分析按钮
7、在展示出来的原文分词结果(左侧)和关键词分词结果(右侧)中对比最下面一行,若右侧分词结果的所有词在左侧都能找到,那么在AND关系的检索时能够匹配;若部分能够找到,那么在OR关系的检索中能够匹配;若完全找不到,那么无法匹配。
索引一条记录,id=1,title=中华人民共和国来做调试
直接检索中华人民共和国
从上图看(图可放大),最终检索结果被解析成了”+text:中 +text:华 +text:人 +text:民 +text:共 +text:和 +text:国”,因为我们在q的输入框中没有输入检索字段,所以solr会检索默认字段”text”,而该字段不包含我们需要的信息,所以检索无结果。
输入正确的字段title后,可以成功检索出来
原文中华人民共和国分词后:中华、人民、共和国
搜索词中华解放军分词后:中华、解放军
部分匹配,我们也希望检索出来
从上图看(图可放大),最终检索结果被解析成了"+title:中 +title:华 +title:解放 +title:军",加号(+)标识逻辑与关系,相当于检索"title:中 AND title:华 AND title:解放 AND title:军",因此无法检索出来
修改默认逻辑关系
(q.op=OR)为OR后
,分此后的检索式加号没了,是逻辑或关系,因此能够成功检索出来。这里OR一定要大写。
这个默认检索关系可以通过修改schema.xml的defaultOperator进行配置
<solrQueryParser defaultOperator=”OR”/>
有时候用户会用空格输入多个关键字进行检索,如title:中华 人民 共和国
通过开启debugQuery参数,我们看到,最终检索结果被解析成了
+(+title:中 +title:华) +(+text:人 +text:民) +(+text:共 +text:和 +text:国)
中华是在title上检索的,后面的词都到text字段检索了
通过指定默认字段df为title,可以修正最终检索式,从上图看,修正后结果可以正常检索返回。
其它
以上是一些常见数据召回问题。
检索调优是搜索引擎使用中最复杂的过程,需要在长期实践中积累经验,同时需要了解数据情况,业务特点等多方面根据情况进行调整。
Solr web服务器管理界面用法
http://www.devnote.cn/article/38.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2015-07-18 SQL Server 2008 数据库同步的两种方式 (发布、订阅)
2015-07-18 SQL Server 2008 数据库同步的两种方式 (发布、订阅)
2015-07-18 通过SQL Server 2008数据库复制实现数据库同步备份
2015-07-18 SQL Server 2008 R2数据库镜像部署图文教程
2015-07-18 SQL 2008提供几种数据同步方式
2014-07-18 web页面导出到Excel乱码解决