AlgoliaSearch: Сортировать предметы по баллу?
Я потратил несколько дней, пытаясь понять, как я могу сортировать элементы по заданной конфигурации, например, у нас есть модель, которая называется "Product". У товара есть "has_image" - булево поле, "rating" - десятичное поле. И я хотел бы отсортировать элементы таким образом: Только товары с изображениями должны быть сверху, также второй сортировкой является рейтинг, поэтому товары должны появляться в порядке убывания для логики рейтинга ("товары, которые имеют лучший рейтинг").
Я создал индекс:
@register(Product)
class ProductIndex(AlgoliaIndex):
custom_objectID = "pk"
index_name = "Product"
fields = (
"id",
"title",
"category_id",
"category_ids",
"slugified_attrs",
"seller_id",
"supplier_id",
"rating_count",
"has_image",
"is_on_sale",
"supplier_priority"
)
settings = {
"minWordSizefor1Typo": 4,
"minWordSizefor2Typos": 8,
"hitsPerPage": 20,
"maxValuesPerFacet": 100,
"version": 2,
"attributesToRetrieve": None,
"unretrievableAttributes": None,
"optionalWords": "None",
"attributesForFaceting": get_attributes_for_faceting(),
"attributesToSnippet": None,
"attributesToHighlight": None,
"paginationLimitedTo": 1000,
"attributeForDistinct": None,
"exactOnSingleWordQuery": "attribute",
"ranking": [
"typo",
"geo",
"words",
"filters",
"proximity",
"attribute",
"exact",
"custom",
],
"separatorsToIndex": "",
"removeWordsIfNoResults": "none",
"queryType": "prefixLast",
"highlightPreTag": "<em>",
"highlightPostTag": "</em>",
"snippetEllipsisText": "",
"alternativesAsExact": ["ignorePlurals", "singleWordSynonym"],
"searchableAttributes": ["title"],
"numericAttributesForFiltering": None,
'attributesForFaceting': [
'filterOnly(has_image)',
'filterOnly(rating_count)',
'filterOnly(supplier_priority)',
],
}
Для работы фильтров указал attributesForFaceting
, но так как я задаю такой поиск:
params = {
"hitsPerPage": settings.PRODUCTS_PER_PAGE,
"optionalFilters": [
"rating_count<score=5000>",
"supllier_priority<score=4>",
"has_image:true<score=100>",
],
**kwargs,
}
Появляются только товары с изображениями, на последней странице нет товаров с фотографиями. Также мы видим, что первые 3 товара имеют рейтинг, в другой строке рейтинг равен 0. И если мы пропустим еще несколько строк, то увидим, что там снова будут товары с рейтингом. Как это правильно настроить?