我是Solr的新手,使用Solr 7.3,并尝试实现以下目标-给定日期,我需要检索所有合同已过期的产品,该产品按最早到期的合同排序,但不考虑已经过期的合同。我无法正确排序。在以下情况下,product_id“ 10002023”应该是列表中的最后一个,因为它的合同最近到期(2021-08-31),而忽略了已到期的合同。任何帮助将不胜感激。
http://localhost/solr/catalogue/select?fl=product_id,%20contract_id,%20contract_valid_to&fq=contract_id:[*%20TO%20*]&fq=contract_valid_to:%20[2018-12-12%20TO%20*]&q=*:*&sort=field(contract_valid_to,%20min)%20asc
..."docs":[
{
"product_id":"10002023",
"contract_id":["1427",
"1428"],
"contract_valid_to":["2018-12-07 15:36:13.0",
"2021-08-31 15:40:33.0"]},
{
"product_id":"1012974",
"contract_id":["867"],
"contract_valid_to":["2019-05-16 15:58:01.0"]},
{
"product_id":"1012985",
"contract_id":["777"],
"contract_valid_to":["2019-05-19 11:07:50.0"]},
{
"product_id":"1012975",
"contract_id":["787"],
"contract_valid_to":["2019-05-24 12:02:18.0"]},
{
"product_id":"1012997",
"contract_id":["831"],
"contract_valid_to":["2019-05-29 15:37:37.0"]}]
答案 0 :(得分:0)
不幸的是,您用于日期字段的定义不正确
<dynamicField name="contract_*" type="string" multiValued="true" indexed="true" stored="true"/>
假设这只是一个纯字符串,与其他字符串没有区别。
此外,关于第二条评论,Solr仅支持1种格式的日期-YYYY-MM-DDThh:mm:ssZ
,因此,如果要使用日期功能,则需要转换为适当的格式并使用date
类型。