如何在Solr中查询大于和小于指定ID(123)的数据?
Solr中正确检索大于/小于指定ID的实现方式
核心修正与正确写法
你的代码存在两个关键问题:一是字符串引号未闭合(语法错误),二是可以用更规范的Solr查询语法实现范围检索。以下是两种可行的正确实现方式:
方式1:使用比较运算符(>、<)
直接用大于/小于符号构造查询,客户端库通常会自动处理URL转义(无需手动写>/<):
// 查询ca_id大于123的数据 var next = client_education.query().q( 'all_type:current_affairs AND active:1 AND ca_id>123' ); // 查询ca_id小于123的数据 var previous = client_education.query().q( 'all_type:current_affairs AND active:1 AND ca_id<123' );
方式2:使用Solr范围查询语法(更推荐)
用[start TO end](包含边界)或{start TO end}(不包含边界)定义范围,*代表无穷值:
// 查询ca_id大于123(等价于ca_id>123,不包含123) var next = client_education.query().q( 'all_type:current_affairs AND active:1 AND ca_id:[124 TO *]' ); // 查询ca_id小于123(等价于ca_id<123,不包含123) var previous = client_education.query().q( 'all_type:current_affairs AND active:1 AND ca_id:[* TO 122]' ); // 如果需要包含边界(比如>=123或<=123),直接写对应数值: // var next = client_education.query().q('all_type:current_affairs AND active:1 AND ca_id:[123 TO *]'); // var previous = client_education.query().q('all_type:current_affairs AND active:1 AND ca_id:[* TO 123]');
关键注意事项
- 必须确保
ca_id字段在Solr schema中定义为数值类型(如int、long),如果是字符串类型,比较会按字典序执行,结果不符合数值大小的预期。 - 修正原代码中的字符串引号未闭合问题,这是基础语法错误,会导致查询失败。
内容的提问来源于stack exchange,提问作者Karshnik Singh
相关产品推荐
相关产品推荐

