Как реализовать YQL пейджинг? - PullRequest
0 голосов
/ 22 марта 2010

Я прочитал руководство по YQL, и я продолжаю просматривать http://developer.yahoo.com/yql/guide/yql-o...entables-paging, и я смотрел на несколько примеров, но я все еще немного растерян, как работает подкачка YQL.

Проблема, которую я пытаюсь решить, - это создание таблицы открытых данных YQL для страниц Jetpacks галереи Mozilla labs. http://jetpackgallery.mozillalabs.com/jetpacks

Вы пролистываете страницы реактивных ранцев с помощью переменной запроса? Page, и есть переменная запроса order_by. Вы можете видеть только 10 результатов на странице.

Вопросы:

  • Элемент списка
  • Должен ли я использовать или?
    • Как мне указать параметр запроса, который указывает на страницу? в данном случае это параметр запроса 'page'.
  • Я предполагаю, что должен использовать: <urls><url>http://jetpackgallery.mozillalabs.com/jetpacks</url></urls> это правильно?
  • В элементе execute мне нужно будет извлечь детали для каждого реактивного ранца на странице? если да, то как мне организовать это для объекта response.object?

Может кто-нибудь помочь? или, возможно, указать на таблицу данных, на которую я могу смотреть в качестве ссылки? или лучше документация о том, как работает пейджинг?

1 Ответ

1 голос
/ 18 мая 2010

Во-первых, вы должны взглянуть на модель подкачки (Ваша ссылка была сжата выше, поэтому я просто выкладываю ее здесь.

Когда вы используете пейджинг без <execute></execute> указанный блок будет использоваться в строке запроса с URL-адресом, указанным в * 1006. * Просто поиграйте с Примером поиска фотографий Flickr , вам нужно запустить его в консоли с включенной диагностикой, чтобы посмотретьпри изменениях в URL-адресе. Атрибут id используется для вставки числа в запрос. Просто чтобы проиллюстрировать здесь, часть подкачки выглядит следующим образом:

   <paging model="page">  
     <start id="page" default="0" />  
     <pagesize id="per_page" max="250" />  
     <total default="10" />  
   </paging>  

Например, запрос

select * from flickr.photos.search(10,20) where has_geo="true"`

Используемый URL был http://api.flickr.com/services/rest/?method=flickr.photos.search&has_geo=true&page=1&per_page=30. Как вы можете видеть, на самом деле он занял page=1, но запросил per_page=30 и внутренне усек первые 10 результатов, так что вы получите смещение 10 и всегоиз 20. Результаты YQL сделали это потому, что выбрана модель page.

Другой пример, если вы попытаетесь это сделать:

select * from flickr.photos.search(249,2) where has_geo="true"

YQL будет получать оба ...&page=1&per_page=250 и ...&page=2&per_page=250 (I 'мы сократили URL-адреса для иллюстрации) , как и ожидалось, чтобы получить результаты.

Переменные подкачки также определены в глобальной области видимости, если вы используете JavaScript в разделе <execute></execute>.Вы можете видеть, что это используется в таблице OpenData flickr.photos.astro .

Я думаю, это должно ответить на ваш вопрос, поскольку я вижу, что на GitHub , вы работали над тем, как извлечь страницы с помощью XPath.

В вашем случае у вас должно быть что-то вроде:

   <paging model="page">  
     <start id="page" default="1" />  
     <pagesize id="per_page" max="10" />  
     <total default="10" />  
   </paging>  

per_page будет в вашем внутреннем запросе, но этоиспользуется для YQL для определения необходимых запросов.Тогда в вашем JavaScript, вероятно, можно сделать что-то вроде:

   y.query(
       "select * from html where url=@url",
       {url: "http://jetpackgallery.mozillalabs.com/jetpacks?page=" + page}
       );
...