我正在使用Apache Solr 8作为文档的产品。每个文档都包括我想要提升的过去 X 天内的销售额,以及标题和其他字段。
假设产品 A 已售出 5 次,我想用 score+10 提升它;一个产品 B 已售出 50 次,我想将分数提高 30。
我尝试使用看起来像(edismax查询解析器(的boostFunction。
q=Coffee&qf=title&bf=if(lt(sales,5),10,if(lt(sales,50),30))
Solr现在返回与我的"咖啡"查询无关但仅匹配boost函数的文档。甚至还有得分为"0"的结果。例如
Rank;Score;Sales;Title
1;58.53;55;Coffee big
2;38.11;50;Coffee
3;30;55;Tea
有什么想法可以摆脱那些"仅增强功能"匹配吗?
找到了答案!
我的查询字段实际上包括
诸如&qf=title^2 longDescription^0 whatever^0...
solr 不会排除在这些 0 提升字段中找到的结果,而是将它们相加并与 - 井分 0 匹配。
当我删除 0 升压时,一切都按预期工作。