2014-09-17 10 views
11

Ich habe nach einer Möglichkeit, die wikipedia api basiert auf einer Suchzeichenfolge für eine Liste der Artikel mit den folgenden Eigenschaften abfragen:Wikipedia api Volltextsuche zurück Artikel mit Titel, Schnipsel und Bild

  • Titel
  • Ausschnitt/Beschreibung
  • Ein oder mehrere Bilder zum Artikel.

Ich muss auch die Abfrage mit Jsonp machen.

Ich habe versucht mit Hilfe der Liste = Suchparameter

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

Aber es scheint, die prop = Bilder zu ignorieren, habe ich versucht, auch Variationen der prop = image verwenden und = pageimages prop. Aber alle geben mir das gleiche Ergebnis, als wenn ich nur die list = search benutze.

Ich habe auch versucht action = OpenSearch-

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

Was mir genau das gibt, was ich will, wenn ich Format gesetzt = xml, sondern gibt eine einfache Anordnung von Seitentiteln, wenn format = json verwenden und daher scheitert wegen der Jsonp-Anforderung.

Gibt es einen anderen Ansatz, dies zu tun? Ich würde wirklich gerne in einer einzigen Anfrage lösen, anstatt die erste Suchanfrage und dann eine zweite Anfrage für die Bilder mit titles = x | y | z

+0

Sie können eine 'list'- und eine' prop'-Abfrage nicht zusammen verwenden. – Bergi

+0

Also gibt es keine Möglichkeit, dies in einer Anfrage zu tun? Scheint wie eine hübsche Standardabfrage zu machen. – srosengren

Antwort

17

Wie Bergi vorgeschlagen hat, ist der Einsatz von Generatoren der richtige Weg.Genauer gesagt, was ich tun würde:

  • Verwendung list=search als Generator, um die Liste der Artikel zu erhalten
  • Verwendung prop=pageimages ein repräsentatives Bild für jeden Artikel zu erhalten
  • Verwendung prop=extracts, um eine Beschreibung für jeden Artikel zu erhalten

Die ganze Abfrage könnte wie folgt aussehen:

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

Danke, das hat auch eine neue Anforderung gelöst, die ich hatte, indem sie mir eine Eigenschaft zur Kontrolle der Länge des Schnipsel/Extrakts gab. – srosengren

+0

+1, ich habe 'Extrakte' vergessen! – Bergi

1

Ich habe versucht, mit der list = search Parameter, aber es scheint, die prop = Bilder

zu ignorieren Wenn Sie properties abrufen möchten, müssen Sie eine Liste von Seiten angeben, für die Sie wollen, diese zu erhalten; z.B. unter Verwendung der titles=, pageids= oder revids= Parameter. Du hast keine gesendet, also hast du kein Ergebnis für die prop=images erhalten.

Wenn Sie nicht genutzt api.php?action=query&list=search&srsearch=test&prop=images&titles=test Sie die Suchergebnisse für testund die Bilder der Test Seite bekommen hätte.

Sie können jedoch auch die Sammlung verwenden, die die Abfrage list für Ihre Eigenschaftsabfrage generiert, indem Sie das list-Modul als generator verwenden. Die Abfrage würde wie api.php?action=query&generator=search&gsrsearch=test&gsrnamespace=0&gsrprop=snippet&prop=images aussehen. Leider liefert es nicht die Attribute, die die Liste enthielt, sondern nur die Seiten-IDs für eine grundlegende Eigenschaftsabfrage.

Mit zwei Abfragen ist wahrscheinlich der Weg zu gehen. Btw, ich würde empfehlen, die pageimages property zu verwenden, es wird wahrscheinlich die besten Ergebnisse geben.