solr长文本搜索问题

简介: 多关键词搜索排序质量一直一个疼痛的问题,已经频繁遇到,目前还没来得及系统解决。 针对之前的解决经验,做一个小节,后面可能随着对排序质量的提高,会越来越突出。 请大家拍砖和丰富这方面的经验,提升解决需求的效率。 分析 当前默认都是phrasequery执行,对指定域先分词,然后

多关键词搜索排序质量一直一个疼痛的问题,已经频繁遇到,目前还没来得及系统解决。


针对之前的解决经验,做一个小节,后面可能随着对排序质量的提高,会越来越突出。


请大家拍砖和丰富这方面的经验,提升解决需求的效率。


分析


当前默认都是phrasequery执行,对指定域先分词,然后按照短语去查询,当出现分词交叉后,结果就悲剧了。


当非自动生成phrasequery时候,指定域也会分词,然后按照
AND 
或者 OR

拼接起来去查,此时,短语的关联性丢失,挨在一起的可能没有排在前面,尽管有结果。


当不自动生成phrasequery时候,"  " 
将查询出当做整体,此时依然会分词,只是查询时分词后的拼接去查。例如 “交易成功” 
转为 “交易

成功”


当扩展查询串去查,可能结果来自扩展串,有结果但不一定就是期望。


改为 
建索引最多分词、查询最长匹配,能解压一部分场景需求,对于精准查询的短语、长文本尤其效果好,对于追求结果最多不适应。


或者 
业务执行分词然后按照业务需求执行坡度或者相关性激励来调整相关性。例如 (交易

成功)~12 And

交易^10

成功^2

 


总结:


新业务依赖长文本查询的,需要daily仔细测试,对多关键词的抽样测试不可少。

    

新的对精准匹配要求高的检验使用IK分词,分别配置建索引和查询的分词模式。

    
DismaxQueryparse
 
能有效的减少查询IO和“去重“,完全可以替代
OR 
扩展查询,目前发现一个不友好,例如 
“成功页面 
交易成功”,这个串中“成功”分量非常大,导致


结果排序有点糟糕。

    
Dismaqueryparse
覆盖lucenequeryparse全部功能,同时提供更丰富的查询相关性设置, 
分词内部关系式OR

,一定能保证有结果,


配饰使用方法,在solrconfig.xml  requesthandler

中配置 edismax

Phrasequery 
不启用,一种方法是schema
verison
定义为1.4就可以了,另外是
fieldtype中显示定义不生成,同时solrconfig中配置lucene 
版本34


问题背景


使用paoding分词,默认AND 
,autogeneralPhrasequery
= true


搜“交易成功 
幻灯片” 
没有结果       --》AND之后幻灯片部分没有结果导致没有结果


搜“交易成功” 
有结果 


搜“幻灯片” 
没有结果----》原因是分词交叉

 


使用paoding分词,autogeneralPhrasequery = false


搜“交易成功 
幻灯片” 
有结果        

结果来自交易成功部分


搜“交易成功”        有结果


搜“幻灯片”          没有结果      

交叉依然没有结果

 


使用paoding分词,autogeneralPhrasequery = false  扩展OR


搜“交易成功 
幻灯片” 
扩展为 
“交易成功 
幻灯片” OR  “交易成功

幻灯片”    有结果,结果排序严重受关键词、索引影响


搜“交易成功”        扩展为“交易成功”
OR   “

交易成功”   有结果
  多余IO出现了


搜“幻灯片”          扩展为“幻灯片”
  OR
 “


幻灯片”   有结果  

结果排序与期望相差很远,排在一起的没在前面

相关文章
|
JSON Kubernetes 算法
Cobra 命令自动补全指北
本篇文章就来讲讲如何使用 Cobra 来实现命令自动补全。
4408 0
|
程序员
阿里技术高P访谈之“呆萌”程序员蒋晓伟为何从Facebook到阿里巴巴
跟蒋晓伟约在一个下午进行访谈,他的花名叫量仔,这个名号让笔者的第一感觉是“高富帅”。然而,当见到本尊之后,才发现他完全就是一个“呆萌”版的程序员,这也印证了其在阿里巴巴内网上的标签——“头像蛮萌的”。
11340 2
|
9月前
|
存储 弹性计算 人工智能
2026年阿里云服务器价格表及活动报价、租用收费标准参考
阿里云服务器租用体系涵盖轻量应用服务器、ECS云服务器两大核心品类,专注满足通用建站、企业办公、高性能计算等多元需求,收费受实例类型、配置规格、计费方式及地域影响显著。同时推出全场景优惠活动,包括普惠降价、新人秒杀、新老同享福利及长期套餐折扣,部分活动有明确时效限制。
1194 7
|
10月前
|
存储 Java Linux
Nacos注册中心
本文介绍Nacos的安装部署、整合Spring Cloud Alibaba注册中心及服务分级模型应用。涵盖下载启动、配置修改、多集群模拟等步骤,助力实现服务注册与高效治理。(238字)
|
10月前
|
人工智能 监控 安全
从数据发现到外发管控:安得终端DLP打造闭环数据防泄露方案
安得终端DLP系统构建覆盖数据全生命周期的防泄露体系,融合AI识别、智能分级、全通道管控与实时监控,实现敏感数据发现、保护、审计与响应一体化,助力企业精准防控终端数据泄露风险,保障业务合规与安全高效运转。(238字)
487 0
|
存储 分布式计算 Hadoop
MPP 架构与 Hadoop 架构技术选型指南
MPP架构与Hadoop架构是处理海量数据的两大选择。MPP通过大规模并行处理实现快速查询响应,适用于企业级数据仓库和OLAP应用;Hadoop则以分布式存储和计算为核心,擅长处理非结构化数据和大数据分析。两者各有优劣,MPP适合结构化数据和高性能需求场景,而Hadoop在扩展性和容错性上表现更佳。选择时需综合考虑业务需求、预算和技术能力。
1883 14
|
缓存 监控 API
1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示列)
本文介绍如何通过1688开放平台API接口获取店铺所有商品,涵盖准备工作、接口调用及Python代码实现,适用于商品同步与数据监控场景。
|
JSON 算法 API
小红书商品详情签名算法Python
本文分享了作者在电商开发中对接小红书商品详情API的实战经验,包括权限申请、签名算法、限流控制、数据解析及Webhook订阅等关键技术点,并提供了实用的Python代码示例。
|
存储 算法 Java
求数组中的最大值和最小值
本文介绍了在程序中如何查找数组中的最大值和最小值,重点讲解了两种算法:普通算法和分治算法。普通算法通过遍历数组直接比较元素大小,找出最值;而分治算法则通过递归将数组划分成更小的部分,分别找出各部分的最大值,最终合并结果得到整个数组的最大值。文章以 {3,7,2,1} 为例,详细演示了两种算法的实现过程,并提供了 C、Java 和 Python 的代码示例。
884 0
|
编解码 算法 数据可视化
Scanpy 分析 scRNA-seq:细胞类型注释
Scanpy 分析 scRNA-seq:细胞类型注释
Scanpy 分析 scRNA-seq:细胞类型注释

热门文章

最新文章