2010-03-22 3 views
0

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

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

Вы пролистывать страницы реактивного ранца с переменной страницей запроса? И есть order_by переменной запроса. Вы можете видеть только 10 результатов на странице.

Вопросы:

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

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

ответ

1

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

При использовании поискового вызова без каких-либо <execute></execute> блока, указанного, он будет использоваться в строка запроса с URL-адресом, указанным в <url></url>. Просто играйте с помощью Flickr Photo Search Example, вы должны запустить ее в консоли с включенной диагностикой, чтобы просмотреть изменения в 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 (Я сократил URLs для иллюстрации), как ожидается, чтобы получить результаты.

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

Я думаю, что это должно ответить на вопрос, потому что я вижу, что on 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 [email protected]", 
     {url: "http://jetpackgallery.mozillalabs.com/jetpacks?page=" + page} 
     ); 
Смежные вопросы