如何改写Solr搜索表达式取消行限制,实现全索引检索?
解决全量索引检索的改写方案
直接将原表达式中的search组件替换为cursor组件即可实现全量索引的遍历与过滤,改写后的表达式如下:
having( select(cursor(myIndex, q="*:*", fl="*"), id, dotProduct(ATTRIBUTE, array(4,5,2)) as prod, l1norm(array(1,2,3)) as a, l1norm(ATTRIBUTE) as b, div(prod, add(a, sub(b, prod))) as c ), and(gteq(c, 5), lteq(c, 8)))
关键改动说明
- 替换
search为cursor:cursor是Solr流式表达式中专门用于全量遍历索引的组件,它会自动处理分页逻辑,不会像search的rows参数那样限制返回的文档数量,能完整遍历整个索引的所有文档。 - 保留原有计算与过滤逻辑:无需修改后续的字段计算(
prod、a、b、c)和条件过滤(gteq(c,5)、lteq(c,8)),having会对cursor返回的所有文档执行计算并筛选符合条件的结果。
内容的提问来源于stack exchange,提问作者jetski
相关产品推荐
相关产品推荐

