2014-09-17 19 views
11

ho cercato un modo per interrogare l'API Wikipedia in base a una stringa di ricerca per un elenco di articoli con le seguenti proprietà:Wikipedia Search API full-text per tornare articoli con il titolo, snippet e immagine

  • Titolo
  • Snippet/Descrizione
  • Una o più immagini correlate all'articolo.

Devo anche effettuare la query utilizzando jsonp.

Ho provato con l'elenco = parametro di ricerca

http://en.wikipedia.org/w/api.php?action=query&list=search&prop=images&format=json&srsearch=test&srnamespace=0&srprop=snippet&srlimit=10&imlimit=1

ma sembra ignorare le prop = immagini, ho provato anche le variazioni che utilizzano il prop = ImageInfo e prop = pageimages. Ma tutti mi danno lo stesso risultato di usare semplicemente list = search.

Ho anche provato action = OpenSearch

http://en.wikipedia.org/w/api.php?action=opensearch&search=test&limit=10&format=xml

che mi dà esattamente quello che voglio quando ho impostato format = xml, ma restituisce un semplice array di titoli di pagina quando si utilizzano format = json e quindi fallisce a causa del requisito jsonp.

C'è un altro approccio per farlo? Mi piacerebbe davvero per risolvere questo in una singola richiesta, piuttosto che fare la prima richiesta di ricerca e poi una seconda richiesta per le immagini utilizzando titoli = x | y | z

+0

Non è possibile utilizzare una query 'list' e una' prop' insieme. – Bergi

+0

Quindi non c'è modo di farlo in una richiesta? Sembra una query abbastanza standard da fare. – srosengren

risposta

17

Come suggerito da Bergi, usare i generatori è la strada da percorrere qui.In particolare quello che vorrei fare:

  • uso list=search come un generatore, per ottenere l'elenco degli articoli
  • uso prop=pageimages per ottenere un'immagine rappresentativa per ogni articolo
  • uso prop=extracts per ottenere una descrizione per ogni articolo

L'intera interrogazione potrebbe essere la seguente:

http://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrsearch=test&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max

+0

Grazie, anche questo ha risolto un nuovo requisito che avevo, dandomi una proprietà per controllare la lunghezza dello snippet/extract. – srosengren

+0

+1, ho dimenticato "estratti"! – Bergi

1

Ho provato con la lista di ricerca = parametro, ma sembra ignorare la prop = immagini

Se si desidera recuperare qualsiasi properties, è necessario specificare un elenco di pagine per il quale si desidera ottenere questi; per esempio. utilizzando i parametri titles=, pageids= o revids=. Non hai inviato nessuno, quindi non hai ottenuto un risultato per lo prop=images.

Se è stato utilizzato api.php?action=query&list=search&srsearch=test&prop=images&titles=test si sarebbe ottenuto i risultati di ricerca per teste le immagini della pagina Test.

È possibile però anche usare la collezione che la query list genera per la vostra query di proprietà, utilizzando il modulo list come generator. La query sembrerebbe api.php?action=query&generator=search&gsrsearch=test&gsrnamespace=0&gsrprop=snippet&prop=images. Sfortunatamente, non fornisce gli attributi che l'elenco conteneva, ma utilizzava solo i pageids per una query di proprietà di base.

L'utilizzo di due query è probabilmente la strada da percorrere. A proposito, mi consiglia di utilizzare il pageimages property, probabilmente ti darà i migliori risultati.

Problemi correlati