Add is_finite_pagination method to SearchQuery

This commit is contained in:
ManyTheFish 2022-10-26 18:08:29 +02:00
parent 68c9751d49
commit f4021273b8
2 changed files with 8 additions and 3 deletions

View File

@ -428,7 +428,7 @@ impl SearchAggregator {
ret.max_terms_number = q.split_whitespace().count();
}
if query.hits_per_page.or(query.page).is_some() {
if query.is_finite_pagination() {
let limit = query.hits_per_page.unwrap_or_else(DEFAULT_SEARCH_LIMIT);
ret.max_limit = limit;
ret.max_offset = query.page.unwrap_or(1).saturating_sub(1) * limit;

View File

@ -63,6 +63,12 @@ pub struct SearchQuery {
pub matching_strategy: MatchingStrategy,
}
impl SearchQuery {
pub fn is_finite_pagination(&self) -> bool {
self.page.or(self.hits_per_page).is_some()
}
}
#[derive(Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub enum MatchingStrategy {
@ -138,14 +144,13 @@ impl Index {
search.query(query);
}
let is_finite_pagination = query.is_finite_pagination();
search.terms_matching_strategy(query.matching_strategy.into());
let max_total_hits = self
.pagination_max_total_hits(&rtxn)?
.unwrap_or(DEFAULT_PAGINATION_MAX_TOTAL_HITS);
let is_finite_pagination = query.page.or(query.hits_per_page).is_some();
search.exhaustive_number_hits(is_finite_pagination);
// compute the offset on the limit depending on the pagination mode.