簡體   English   中英

Solr 7.3-在多值字段上有條件排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM