Как устранить сторонние результаты запросов в Walmart Search API - PullRequest
0 голосов
/ 27 января 2019

Я работал с API поиска Walmart для приложения Django и предпочел бы искать только официальные данные о продукте Walmart, а не Walmart Marketplace.Я пытался использовать фасетные фильтры, чтобы ограничить возвращаемый ответ json элементами, которые имеют только marketplace = false, но я не добился успеха.

Возможны варианты ответа фасета: pickup_and_delivery, brand, price и retailer (см. facets_list.txt для ответа на стандартный запрос «ipod»):

"facets": [{
        "name": "pickup_and_delivery",
        "properties": {
            "multi": "or",
            "nullCount": "0"
        },
        "displayName": "Shipping & Pickup",
        "facetValues": [{
            "name": "2-Day Shipping",
            "count": 141
        }, {
            "name": "Ship to Home",
            "count": 260
        }, {
            "name": "FREE Pickup",
            "count": 10
        }]
    }, {
        "name": "brand",
        "properties": {
            "multi": "or",
            "nullCount": "4"
        },
        "displayName": "Brand",
        "facetValues": [{
            "name": "Apple",
            "count": 158
        }, {
            "name": "Jensen",
            "count": 2
        }, {
            "name": "Insten",
            "count": 20
        }, {
            "name": "RAM Game Room",
            "count": 8
        }, {
            "name": "Home Comforts",
            "count": 4
        }, {
            "name": "Unbranded",
            "count": 4
        }, {
            "name": "Colordrives",
            "count": 3
        }, {
            "name": "EpicDealz",
            "count": 3
        }, {
            "name": "Group Vertical",
            "count": 3
        }, {
            "name": "AGPTEK",
            "count": 2
        }, {
            "name": "AGPtek",
            "count": 2
        }, {
            "name": "CELLET",
            "count": 2
        }, {
            "name": "DLO - Phillips",
            "count": 2
        }, {
            "name": "MyNetDeals",
            "count": 2
        }, {
            "name": "SuperGuardZ",
            "count": 2
        }, {
            "name": "ULAK",
            "count": 2
        }, {
            "name": "USA Gear",
            "count": 2
        }, {
            "name": "XtremeMac",
            "count": 2
        }, {
            "name": "jWIN",
            "count": 2
        }, {
            "name": "APPLE IPODS AND APPLE TV",
            "count": 1
        }]
    }, {
        "name": "price",
        "properties": {
            "multi": "or",
            "nullCount": "0"
        },
        "displayName": "Price",
        "facetValues": [{
            "name": "$0 - $75"
        }, {
            "name": "$75 - $100"
        }, {
            "name": "$100 - $150"
        }, {
            "name": "$150 - $200"
        }, {
            "name": "$200 - $250"
        }, {
            "name": "$250+"
        }]
    }, {
        "name": "retailer",
        "properties": {
            "multi": "or",
            "nullCount": "1"
        },
        "displayName": "Retailer",
        "facetValues": [{
            "name": "Walmart.com",
            "count": 9
        }, {
            "name": "VIPOUTLET",
            "count": 2
        }, {
            "name": "Altatac",
            "count": 2
        }, {
            "name": "Simple Cell Inc",
            "count": 6
        }, {
            "name": "The iSuperStore",
            "count": 123
        }, {
            "name": "eForCity",
            "count": 21
        }, {
            "name": "Landloop Corporation",
            "count": 8
        }, {
            "name": "HOME COMFORTS",
            "count": 5
        }, {
            "name": "LUCKYSTARTECHNOLOGYINC",
            "count": 5
        }, {
            "name": "Concept Electronics",
            "count": 4
        }, {
            "name": "EpicDealz",
            "count": 4
        }, {
            "name": "Lindmeyers",
            "count": 4
        }, {
            "name": "Quality Photo",
            "count": 4
        }, {
            "name": "Wombat Reserve",
            "count": 4
        }, {
            "name": "Group Vertical",
            "count": 3
        }, {
            "name": "Tetchy Tech",
            "count": 3
        }, {
            "name": "2ndstreet Electronics",
            "count": 2
        }, {
            "name": "Clover Hill",
            "count": 2
        }, {
            "name": "DealClock",
            "count": 2
        }, {
            "name": "Direct Deals",
            "count": 2
        }]
    }]
}

Я установил для фильтра фасетов значение «retailer: Walmart.com», но это все же позволило возвращать элементы рынка в поиск.Вот ответ, упрощенный до первого возвращенного элемента и нескольких ключевых значений, представляющих интерес:

{
    "query": "ipod",
    "sort": "relevance",
    "responseGroup": "base",
    "totalResults": 260,
    "start": 1,
    "numItems": 10,


    "items": [{
        "itemId": 42608125,
        "parentItemId": 42608125,
        "name": "Apple iPod touch 32GB",
        "msrp": 247.0,
        "salePrice": 249.0,
        "upc": "888462353151",
        "categoryPath": "",
        "shortDescription": "",
        "longDescription": "",
        "thumbnailImage": "",
        "mediumImage": "",
        "largeImage": "",
        "productTrackingUrl": "",
        "standardShipRate": 0.0,
        "marketplace": true,
        "modelNumber": "MKJ02LL/A",
        "sellerInfo": "ElectroCell",
        "productUrl": "",
        "customerRating": "4.517",
        "numReviews": 209,
        "customerRatingImage": "",
        "categoryNode": "",
        "rhid": "32367",
        "bundle": false,
        "stock": "Available",
        "addToCartUrl": "",
        "affiliateAddToCartUrl": "",
        "freeShippingOver35Dollars": false,
        "giftOptions": {},
        "imageEntities": [{
            "thumbnailImage": "",
            "mediumImage": "",
            "largeImage": "",
            "entityType": ""
        }

http://api.walmartlabs.com/v1/search?query=ipod&format=json&facet=on&facet.filter=retailer:Walmart.com&apiKey={apikeyhere}

Я использовал Interactive API Tool, чтобы сгенерировать этот запрос дляпростота примера: https://developer.walmartlabs.com/io-docs

Я также попытался использовать группу ответа на предмет (https://developer.walmartlabs.com/docs/read/Item_Field_Description), чтобы ограничить поиск, но я не был уверен, как правильно структурировать этотип запроса. Я закончил форматирование запроса так: http://api.walmartlabs.com/v1/search?query=ipod&format=json&facet=on&facet.filter=marketplace:False&apiKey={apikeyhere} с использованием фильтра фасетов в качестве «marketplace: False».

Я пытался использовать «sort», чтобы попытаться изменить элементГруппа ответа, но это тоже не работает. Параметр запроса «responseGroup», по-видимому, допускает только два возможных ввода: базовый, полный. Они только изменяют объем информации, возвращаемой при поиске.

Я не являюсьдействительно уверен, как действовать дальше, так как документация по API поиска довольно ограничена, поэтому любые рекомендации приветствуются. https://developer.walmartlabs.com/docs/read/Search_API

ОжидаемыйВ результате только ретранслятор Walmart.com вернулся с использованием фазовой фильтрации.

---- EDIT ---

Я более внимательно посмотрел на результаты запросов, которые я получал, когда «Walmart.com» использовался в качестве розничного продавца в фасетном фильтре, и заметил, что все работает правильно.Проблема, которая меня смущала, заключалась в том, что результаты запроса по-прежнему возвращали рыночную площадь: «истинное» значение для стороннего поставщика.

Однако, когда я сравниваю результаты запроса с ибез активного фильтра фасетов вы можете видеть рынок: false возвращается почти для каждого значения (я упростил результаты запроса до нескольких значений ниже):

       Query=ipod (9 results)                          Query=ipod  (10 results)
       Facet=on&facet.filter=retailer:Walmart.com      Facet=off

       "marketplace": true,                            "marketplace": true,
       "modelNumber": "MKJ02LL/A",                     "modelNumber": "MKJ02LL/A",
       "sellerInfo": "ElectroCell",                    "sellerInfo": "ElectroCell",


       "marketplace": false,                           "marketplace": false,
       "modelNumber": "MKWM2LL/A",                     "modelNumber": "MKWM2LL/A",


       "marketplace": false,                           "marketplace": true,
       "modelNumber": "MKHJ2LL/A",                     "sellerInfo": "Quality Photo",


       "marketplace": false,                           "marketplace": false,
       "modelNumber": "AMZ94926",                      "modelNumber": "MKJ02LL/A",


       "marketplace": false,                           "marketplace": true,
       "modelNumber": "ID7HXS-F00",                    "modelNumber": "MKN22LLA_NEW90",
                                                       "sellerInfo": "The iSuperStore",

       "marketplace": false,                           "marketplace": true
       "modelNumber": "IPOD5CBPCH",                    "modelNumber": "MKN52LL/A","marketplace": true,
                                                       "sellerInfo": "The iSuperStore",

       "marketplace": false,                           "marketplace": false,
       "modelNumber": "GM-iLOOP",                      "modelNumber": "MKMJ2LL/A",


       "marketplace": false,                           "marketplace": true,
       "modelNumber": "RBMD481LL/A",                   "modelNumber": "MKN52LL/A",
                                                       "sellerInfo": "The iSuperStore",

       "marketplace": false,                           "marketplace": true,
       "modelNumber": "MC027LL/A",                     "sellerInfo": "Concept Electronics",


                                                       "marketplace": true,
                                                       "modelNumber": "VIPRB-MKJ02LL/A",
                                                       "sellerInfo": "VIPOUTLET",

Я не знаю, почемуПоставщик Electrocell по-прежнему классифицируется как Walmart.com в качестве розничного продавца, но, похоже, это все еще эффективный метод сокращения результатов запросов третьих сторон с использованием API поиска.

Если у кого-то есть более эффективный способвыполнив этот поиск, чтобы теперь возвращались сторонние результаты, такие как использование responseGroup, пожалуйста, дайте мне знать.

...