2015-08-20 3 views
1

Детских У меня есть схемы с вложенными документами, выглядит следующим образом:Solr - Сортировать документы, основанные на

{ 
    "id":"227686", 
    "ProductID":"227686", 
    "type":"product", 
    "SKU":"DAFA2A1F047E438B8462667F987D80A5", 
    "Name":"product name", 
    "ShortDescription":"s description", 
    "UOM":"Unit", 
    "UomSize":"48", 
    "CategoryID":59, 
    "CategoryName":"Produce", 
    "ManufacturerID":322, 
    "ManufacturerName":"-------", 
    "Active":"true", 
    "_version_":1509403723402575872, 
    "_childDocuments_":[ 
    { 
     "id":"227686_83", 
     "type":"buyer", 
     "BuyerID":83, 
     "DisplayOrder":0, 
     "ProductID":"227686"}, 
    { 
     "id":"227686_86", 
     "type":"buyer", 
     "BuyerID":86, 
     "DisplayOrder":10, 
     "ProductID":"227686"}, 
    { 
     "id":"227686_83_84", 
     "type":"seller", 
     "BuyerID":83, 
     "SellerID":84, 
     "SellerName":"-----", 
     "ProductID":"227686"}, 
    { 
     "id":"227686_83_89", 
     "type":"seller", 
     "BuyerID":83, 
     "SellerID":89, 
     "SellerName":"-----", 
     "ProductID":"227686"}, 
    ]}, 

Есть ли способ запроса, так что я могу получить родительские документы сортируются по полю DisplayOrder дочернего документа?

Я хочу, чтобы запросить название продукта и получить результаты для конкретного покупателя и я:

http://localhost:8983/solr/dine/select?q=Name:"product name"&fq={!parent%20which=type:product v="type:buyer AND BuyerID=83"}&wt=json&indent=true&fl=*,[child%20parentFilter=type:product%20childFilter=%22((type:buyer%20AND%20BuyerSiteID:83)%20OR%20(type:seller%20AND%20BuyerSiteID:83))%22%20%20limit=1000]&rows=1000 

Но результаты не сортируются по полю DisplayOrder дочернего документа.

Спасибо.

ответ

-2

Для этого вы можете использовать параметр сортировки.

sort: Параметр сортировки упорядочивает результаты поиска по возрастанию (по возрастанию) или по убыванию (по убыванию). Параметр может использоваться с числовым или алфавитным контентом.

Вам нужно либо проиндексировать поле DisplayOrder, либо определить его как DocValue в схеме, и это не должно быть многозначное поле.

Если вы не определяете поле DisplayOrder как DocValues, то его не следует оценивать каким-либо анализатором или он должен использовать KeywordTokenizer, который по существу производит один термин.

Здесь вы можете найти более подробную информацию. Common Query Parameters

+0

Проблема заключается в том, что DisplayOrder исходит из дочернего документа, и я хочу, чтобы родители отсортировались. – user2239352

Смежные вопросы