Sorl: вернуть самое последнее предложение для каждого документа в таблице - PullRequest
0 голосов
/ 14 сентября 2018

Мы работаем с Cassandra и используем Solr поверх него (DSE). В таблице offers мы храним одно предложение в день для различных документов, которые идентифицированы некоторыми покупателем. Каждое предложение представляет различную цену, которая меняется каждый день, поэтому для каждого документа у нас может быть 30-60 предложений.

Как можно найти из всех документов покупателя по одному предложению на каждый документ, цена которого, например, ниже 10 $ ... или даже просто найти для каждого документа предложение, наиболее близкое по времени от текущий момент

Все поля, которые упоминаются в моем вопросе, проиндексированы. OfferDate, offerPrice, идентификатор покупателя, идентификатор документа и т. Д.

Например, у нас есть все перечисленное ниже для одного и того же Покупателя1, и мы хотим найти предложение наиболее закрытое во времени:

document1
document2
document3

Для документа1 имеем:

offer1Document1.documentId=document1
offer1Document1.offerDate = today.plus(5)

offer2Document1.documentId=document1
offer2Document1.offerDate = today.plus(6)

offer3Document1.documentId=document1
offer3Document1.offerDate = today.plus(7)

Для документа2 у нас есть:

offer4Document2.documentId=document2
offer4Document2.offerDate = today.plus(1)

offer5Document2.documentId=document2
offer5Document2.offerDate = today.plus(2)

Для документа2 у нас есть:

offer5Document3.documentId=document3
offer6Document3.offerDate = today.plus(3)

offer7Document3.documentId=document3
offer7Document3.offerDate = today.plus(5)

Когда мы будем искать все предложения для документов Покупателя1, мы перечислим ВСЕ вышеупомянутые результаты - 7 результатов. Как можно было бы отфильтровать результат, чтобы у нас было одно предложение для каждого документа, которое остается наиболее близким по времени, и результат (только одно предложение на документ с ближайшей датой):

offer1Document1.offerDate = today.plus(5)
offer4Document2.offerDate = today.plus(1)
offer6Document3.offerDate = today.plus(3)

1 Ответ

0 голосов
/ 18 сентября 2018

Какие поля вы проиндексировали в Solr. Мы можем построить поисковый запрос на основе полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...