2014-10-09 1 views
1

На веб-сайте E-Bay вы можете найти e. г. браслеты с основным цветным серебром (см. снимок экрана ниже).Программный запуск расширенных поисковых запросов Ebay (Java)

Screenshot

Можно ли запустить такой запрос (найти новые браслеты с основным цветом серебра) программным способом (через eBay Search API)? Если да - как?

Я просмотрел findItemsAdvanced, но не нашел ссылки на поиск цветов.

+0

Что вы пробовали до сих пор на Java и что такое идентификатор категории eBay, который вы ищете? –

+0

@ DavidT.Sadler В настоящее время я могу запустить запрос, который дает мне X элементов определенной категории. Особые категории, которые меня интересуют, - это e. г. браслеты или серьги. –

ответ

1

Refining поиски с Finding API осуществляется через Аспект Фильтры которые defined in the documentation как:

аспекты хорошо известны, стандартизированные характеристики элемента. Например, в примере «Размер экрана», «Тип процессора» и «Скорость процессора» могут быть аспектами портативных ПК. Аспекты могут варьироваться для разных видов предметов . Например, аспекты портативных ПК отличаются от тех, что женских платьев (аспекты для женских платьев могут включать в себя «Рукав Стиль», «Длина платья» и «Размер»).

Выполнение поиска - это двухэтапный процесс.

  1. Определите, какие аспекты доступны для данной категории вы ищете в.
  2. Выберите, какие аспекты вы будете использовать и интегрировать их в качестве фильтров в запросе поиска.

В следующих примерах используется Finding Kit, которые eBay предоставляют как часть их Java SDK.

Первый пример показывает, как получить доступные аспекты. Это достигается с помощью операции getHistograms. В этом примере мы будем использовать категорию Ювелирные изделия & Часы> Модные драгоценности> Кольца (67681), которые можно найти на сайте eBay в США.

import java.util.List; 
import com.ebay.services.client.ClientConfig; 
import com.ebay.services.client.FindingServiceClientFactory; 
import com.ebay.services.finding.*; 

public class GetHistograms { 
    public static void main(String[] args) { 
     try { 
      ClientConfig config = new ClientConfig(); 
      config.setApplicationId("<YOUR EBAY APP ID>"); 

      FindingServicePortType serviceClient = FindingServiceClientFactory.getServiceClient(config); 

      GetHistogramsRequest request = new GetHistogramsRequest(); 

      request.setCategoryId("67681"); 

      GetHistogramsResponse result = serviceClient.getHistograms(request); 

      AspectHistogramContainer aspectHistogramContainer = result.getAspectHistogramContainer(); 
      List<Aspect> aspects = aspectHistogramContainer.getAspect(); 
      for(Aspect aspect : aspects) { 
       System.out.println("* " + aspect.getName() + " *"); 
       List<AspectValueHistogram> values = aspect.getValueHistogram(); 
       for(AspectValueHistogram value : values) { 
        System.out.println(value.getValueName()); 
       } 
      } 
     } catch (Exception ex) { 

     } 
    } 
} 

Каждая категория может иметь несколько аспектов, которые состоят из названия, такие как Color и несколько значений, таких как Red, Белый, Синий. Пример вывода, созданного этим кодом, показан ниже.

  • металла Чистота
  • 10k
  • 14k
  • 18k
  • Главный камень
  • Нет Камень
  • Abalone
  • Агатовые
  • Основного цвета
  • Аква
  • Черного
  • Синих

Имен и значение, возвращаемые из getHistograms теперь может быть использован в качестве фильтров в findItemsAdvanced операции. Во втором примере мы будем использовать аспекты Brand и Основные цвета. Этот пример также использует ту же категорию, что и первая.

import java.util.List; 
import com.ebay.services.client.ClientConfig; 
import com.ebay.services.client.FindingServiceClientFactory; 
import com.ebay.services.finding.*; 

public class FindItem { 
    public static void main(String[] args) { 
     try { 
      ClientConfig config = new ClientConfig(); 
      config.setApplicationId("<YOUR EBAY APP ID>"); 

      FindingServicePortType serviceClient = FindingServiceClientFactory.getServiceClient(config); 

      FindItemsAdvancedRequest request = new FindItemsAdvancedRequest(); 

      request.getCategoryId().add("67681"); 

      AspectFilter aspectFilter = new AspectFilter(); 
      aspectFilter.setAspectName("Brand"); 
      aspectFilter.getAspectValueName().add("Paula Abdul"); 
      aspectFilter.getAspectValueName().add("Tiffany"); 
      aspectFilter.getAspectValueName().add("Tommy Hilfiger");  
      request.getAspectFilter().add(aspectFilter); 

      aspectFilter = new AspectFilter(); 
      aspectFilter.setAspectName("Main Color"); 
      aspectFilter.getAspectValueName().add("Gold"); 
      aspectFilter.getAspectValueName().add("Silver"); 
      request.getAspectFilter().add(aspectFilter); 

      PaginationInput pi = new PaginationInput(); 
      pi.setEntriesPerPage(2); request.setPaginationInput(pi); 

      FindItemsAdvancedResponse result = serviceClient.findItemsAdvanced(request); 

      System.out.println("Found " + result.getSearchResult().getCount() + " items."); 
      List<SearchItem> items = result.getSearchResult().getItem(); 

      for(SearchItem item : items) { 
       System.out.println(item.getTitle()); 
      } 
     } catch (Exception ex) { 

     } 
    } 
} 
2

Вы, вероятно, захотите использовать AspectFilters. вход для этого можно найти в предыдущем запросе (см. aspectHistogrammContainer)

+1

Спасибо. Как указано в описании щедрости, если вы предоставите минимальный образец рабочего кода для этого, и он работает, я награжу вас за награду. –

0

VariationType, похоже, в состоянии это сделать.

+0

Спасибо. Как указано в описании щедрости, если вы предоставите минимальный образец рабочего кода для этого, и он работает, я награжу вас за награду. –