Forum Discussion
Hi Claudius,
1) Do you want to combine the result of both searches and then show those combined results using pagination?
yes, i wish to search in 2 forums and paginate the result.
by example,
nbResultByPage = 10
/restapi/vc/categories/id/forum1/search/messages/?q=test > return 12 results
/restapi/vc/categories/id/forum2/search/messages/?q=test > return 20 results
i with to get this result
PAGE 1 : 0-10 of forum1
PAGE 2 : 11-12 of forum1 + 0-8 of forum2
PAGE 3 : 9-19 of forum2
PAGE 4 : 20 of forum2
i have tried to use :
/restapi/vc/categories/id/forum1/id/forum2/search/messages/?q=test
but this does not work.
"The second part of your question I don't know the answer for either. Would be interesting to know what difference between the f, q and phrase parameters actually is and how the one_or_more parameter influences the result? @Lithium_devs"
yes what is the difference between this parameters and what is the influence of one_or_more parameter ?
What sometimes helps in answering API questions is taking a look at the page URL when using the community search page and applying some filters.
I couldn't find a way both there or VIA API to filter by multiple locations. So probably you need to work around a bit like that (Pseudocode):
if (number_resultsperpage_from_firstboard => results_per_page) { // If the results from the first board already fill a page only show those } else { //on the page first show the results from the first board and then have another API call to pull results from second board to fill up the page with parameter page_size = results_per_page - number_resultsperpage_from_firstboard }
i know that's very rough because it does not include all of the pagination checking, but I hope you get the general idea.
At least I can reply the second part of the question:
On the "Search" page of your community click on "Advanced Search" and you will see the three parameters as input fields together with small (i) icons with a more detailed explanation.
- sylvain_mouquet13 years agoGuide
" i know that's very rough because it does not include all of the pagination checking, but I hope you get the general idea."
lol i have coming to the forum for eviting to develop that... After reflexion, this not solve my problem because there is also the sort (by date by example).
"On the "Search" page of your community click on "Advanced Search" and you will see the three parameters as input fields together with small (i) icons with a more detailed explanation."
thanks
- KirillY13 years agoLithium Alumni (Retired)
Hi Sylvain,
have you checked out an article on TKB here - http://lithosphere.lithium.com/t5/Support-Knowledge-Base/Working-with-Rest-API-search/ta-p/39942 . There are some nice pointers there.
In terms of pulling data from two sources - it really depends on what you're trying to achieve. If you are after sequencial displaying of the results, then the above approach by Claudius might work for you, i.e. call first board and paginate results until they run out, then start the second one.
However, if you're after something a bit more flexible in terms of allowing for sorting by date for example, I think your best bet is to pull all the available search results into a single list and then do the pagination yourself.
In terms of the query parameters - here's some info:
1) f (optional) : string - Search field. - you can specify which specific fields you would like to be searched, e.g. subject, body, teaser, attach, tags - this depends on the type of search you're doing
2) q (optional) : string - Search text. - search query
3) phrase (optional) : string - A phrase.You can search for an exact phrase rather than just keyword
4) one_or_more (optional) : string- One or more term. Not 100% sure, but I think its one or more terms present in the message, an equivalent to logical AND / OR. So for example, ?one_or_more=apple%20orange should return posts which include either apple or orange, or both.
Hope this helps,p.s. would be curious to hear about your final solution algorithm!
Best regards
Kirill
- sylvain_mouquet13 years agoGuide
Hi kyershov,
"However, if you're after something a bit more flexible in terms of allowing for sorting by date for example, I think your best bet is to pull all the available search results into a single list and then do the pagination yourself."
I think it's not a valid solution.
Take a look to my table :
5 messages 2.5 ko nb messages ko mo go 5 2,5 0,0025 0,0000025 3000 1500 1,5 0,0015 10000 5000 5 0,005 100000 50000 50 0,05 nb users 300 450000 450 0,45 300 1500000 1500 1,5 300 15000000 15000 15 (tell me if i have done a mistake)
if a search returns 100.000 messages. 300 users will download 15 go of data. (based on 5 messages returns 2.5ko)
I think the only solution is to create an improvement on your API.
"p.s. would be curious to hear about your final solution algorithm!"
we have chosen to limit the filter to one category...