Discourses API get just the number of search results

Hi. I am trying to get just the number of search results from the API.
I have the following query /search.json?q=query but i just need information about how many results there are. Not blurbs, cooked, etc.
Is it possible with discourse API?

I don’t think we return a “count” in the response, but it is something you can calculate yourself.

See the search API docs for a more detailed response example, but it will look something like this:

{
    "posts": [],
    "topics": [],
    "users": [],
    "categories": [],
    "grouped_search_result": {}
}

Be default the API will return a max of 50 results. To calculate the count you need to just count the number of items in the posts array. The number items in the topics array should be the same so there is no reason to count that array too.

Ich versuche auf jede erdenkliche Weise, alle Themen und Beiträge von meiner Seite herunterzuladen – die Ansichten ‘Neueste’ und ‘Top’ sind begrenzt, und jetzt versuche ich, alle Kategorien abzurufen und eine Suche nach der Kategorie durchzuführen (ähnlich wie auf der Website). Wenn ich beispielsweise auf unserer Seite nach ‘Q&A #q-a’ suche hier, erhalte ich über 50 Ergebnisse. Wenn ich jedoch exakt diesen String mit dem Ruby-Gem discourse_api durchsuche, erhalte ich nur 5:

irb(main):123:0> topics["posts"].length
=> 5
irb(main):124:0> topics["topics"].length
=> 5

Warum stimmt das nicht mit der Benutzeroberfläche und Ihren Angaben überein? Was ist der einfachste Weg, Daten zu exportieren? Ich möchte gerne NLP auf den Inhalten unserer Seite durchführen, und es erweist sich als sehr schwierig, einfach nur an die Daten zu kommen. Vielen Dank!

„latest“ unterstützt die Paginierung; du musst lediglich die Parameter korrekt übergeben, und du solltest über die API auf alle Themen zugreifen können.

Auch die Suche unterstützt die Paginierung.

Ich empfehle Reverse engineer the Discourse API als Crashkurs, um alle benötigten Parameter herauszufinden.

Danke @sam! Ich kann sehen (auch schon aus der GET-Anfrage), dass es recht intuitiv sein sollte – wenn ich Seite 2 abrufen möchte, füge ich eine zusätzliche Option für die Seite hinzu. Ich sehe auch, dass „options

Hat hier jemand einen Rat? Ich habe versucht, was vorgeschlagen wurde, aber ich sehe keinen logischen nächsten Schritt. Die Seitenvariable scheint nicht zu funktionieren, wenn sie mit der Anfrage übergeben wird.

Das Discourse-API-Gem verwendet die Route /search/query. Diese scheint nicht auf Paginierung zu reagieren. Die Discourse-Benutzeroberfläche verwendet die Route /search. Diese reagiert auf Paginierung.

Sie können dies in Ihrem Browser testen, indem Sie zu http://forum.example.com/search.json?q=test gehen und dann http://forum.example.com/search.json?q=test&page=2 ausprobieren.

Vielleicht müssen Sie einen Weg finden, den API-Aufruf ohne das Discourse-API-Gem durchzuführen. Wenn Ihr Ziel darin besteht, alle Themen und Beiträge auf Ihrer Seite zu erhalten, scheint die Verwendung der Route /search nicht der beste Ansatz zu sein.

Sie könnten versuchen, einen API-Aufruf an http://forum.example.com/c/your-category-slug.json zu tätigen. Wenn nicht alle Themen der Kategorie in der Anfrage zurückgegeben werden, enthält die topic_list der Anfrage eine Eigenschaft more_topics_url, die Ihnen die Route zur nächsten Seite der Themen angibt. Das sieht dann ungefähr so aus: "/c/site-feedback?page=2". Sie müssen .json zur URL hinzufügen, um die JSON-Daten zu erhalten (/c/site-feedback.json?page=2).

Danke! Das hat absolut perfekt funktioniert, und es ist in Python mit requests so viel einfacher (ich habe es absichtlich kompliziert gemacht, um mich mit Ruby vertrauter zu machen, aber der Client bot nicht, was ich brauchte). Ich bin mit den Exporten weitgehend fertig und habe noch keine Machine-Learning-Sachen gemacht, aber falls jemand an den von mir getätigten Aufrufen interessiert ist, sind die schnellen Skripte hier: GitHub - hpsee/discourse-cluster: Simple scripts to export posts for a discourse category, and do a clustering · GitHub. Hoffentlich mache ich bald einige coole Clustering-Projekte!

Nochmals vielen Dank an @sam und @simon – falls sich andere jemals für einen einfachen Export von Themen interessieren oder (noch weiter gehen) und ein Clustering mit Visualisierungen in d3 durchführen möchten, habe ich einen kurzen Beitrag verfasst, der den Ablauf erklärt: AskCI Discourse Clustering | VanessaSaurus. Und wie bereits erwähnt, findest du alle benötigten Informationen im zuvor verlinkten Repository.