[英]Solr 7.3 - Sort conditionally on multi-valued field
我是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"]}]
不幸的是,您用於日期字段的定義不正確
<dynamicField name="contract_*" type="string" multiValued="true" indexed="true" stored="true"/>
假定這只是一個純字符串,與其他字符串沒有區別。
另外,關於第二條評論,Solr僅支持1種格式的日期YYYY-MM-DDThh:mm:ssZ
,因此,如果要使用日期功能,則需要轉換為正確的格式並使用date
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.