Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.

Search API - Page Selection Component #196

Merged
merged 32 commits into from
Nov 29, 2022

Conversation

bidoubiwa
Copy link
Contributor

@bidoubiwa bidoubiwa commented Oct 25, 2022

🤖 API Diff


Summary

This specification introduces a new pagination system as an alternative to the offset/limit. This pagination component can be used to navigate search results via a page selection.


Changes

Previously, the only way to paginate over the search results was by using limit and offset which returned both these fields an estimatedTotalHits.
This feature introduces two new query parameters page and hitsPerPage that lets you paginate over pages more easily. They add 4 new response fields: page, hitsPerPage, totalPages and totalHits.

When one system is used, only the fields of that pagination system are present in the response object.
When multiple fields from different pagination system are used, the offset/limit system is used.

Telemetry:

  • Add pagination.most_used_navigation property for Documents Searched POST and Documents Searched GET events

Attention To Reviewers

Corner cases may lack in precision.


Misc

  • Update OpenAPI specification file
  • Update telemetry datapoints

@bidoubiwa bidoubiwa changed the base branch from main to release-v0.30.0 October 25, 2022 16:52
@gmourier gmourier mentioned this pull request Oct 26, 2022
1 task
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Outdated Show resolved Hide resolved
@github-actions
Copy link

github-actions bot commented Oct 26, 2022

🤖 API change detected:

Modified (2)

  • GET /indexes/{indexUid}/search
    • Query parameters added: page, hitsPerPage
    • Response modified: 200
      • Attributes added: page, hitsPerPage, totalHits, totalPages
      • Attributes modified: offset, limit, estimatedTotalHits
  • POST /indexes/{indexUid}/search
    • Body modified
      • Attributes added: page, hitsPerPage
    • Response modified: 200
      • Attributes added: page, hitsPerPage, totalHits, totalPages
      • Attributes modified: offset, limit, estimatedTotalHits

View documentation diff

Powered by Bump

@bidoubiwa bidoubiwa marked this pull request as ready for review October 26, 2022 14:08
@bidoubiwa bidoubiwa added the OpenAPI Update OpenAPI specification. label Oct 26, 2022
@gmourier gmourier added Ready For Review Feature specification must be reviewed. Q4:2022 Telemetry Update the telemetry collect. v0.30 labels Oct 26, 2022
@gmourier gmourier changed the title Search API: Pagination search parameters Search API - Pagination search parameters Oct 26, 2022
@bidoubiwa
Copy link
Contributor Author

Is this considered breaking change?

@gmourier
Copy link
Member

gmourier commented Oct 31, 2022

I don't think so because enabling page selection is opt-in and does not change the current behavior (< v0.30) if not used.

text/0118-search-api.md Outdated Show resolved Hide resolved
Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
…/specifications into pagination-search-parameters
Copy link
Member

@ManyTheFish ManyTheFish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggested some small changes that can be ignored.
More generally, I feel that there are too many explanations and examples for a specification.
However, these details could be interesting in the documentation.

Approved!

text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Show resolved Hide resolved
bidoubiwa and others added 2 commits November 2, 2022 14:07
Co-authored-by: Many the fish <legendre.maxime.isn@gmail.com>
@gmourier
Copy link
Member

gmourier commented Nov 2, 2022

@ManyTheFish I've updated the pagination.finite_pagination prototype's property. See 416429c

Since search events are aggregated, it's preferable to know which method was mostly used between exhaustive and estimated, rather than having a boolean set to true as soon one search request used the exhaustive navigation.

Copy link
Member

@gmourier gmourier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super minor changes

text/0118-search-api.md Outdated Show resolved Hide resolved
text/0118-search-api.md Show resolved Hide resolved
bidoubiwa and others added 2 commits November 4, 2022 14:00
Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
@gmourier gmourier merged commit 4b89e10 into release-v0.30.0 Nov 29, 2022
@gmourier gmourier deleted the pagination-search-parameters branch November 29, 2022 14:57
@gmourier gmourier added Implemented Feature specification has been implemented. and removed Ready For Review Feature specification must be reviewed. labels Nov 29, 2022
gmourier added a commit that referenced this pull request Nov 29, 2022
* Bump Meilisearch OpenAPI spec to v0.30.0

* Compression Headers (#178)

* Start specification

* Rename spec file

* Rephrase summary

* Rephrase receiving a compressed response section

* Add links to RFC9910

* Introduce missing_master_key error (#179)

* Update error message (#180)

* Specify the error variant (#181)

* replaces 127.0.0.1 by localhost (#184)

* Configuration File Support (#185)

* init spec file

* Fill-in spec

* Fix typing errors

* adds errors case

* Update text/0185-configuration-file.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Replace config file by configuration file in the error message

* Update text/0185-configuration-file.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Update text/0185-configuration-file.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Update text/0185-configuration-file.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Update text/0185-configuration-file.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Add infos.with_configuration_file to telemetry-policies

* Update text/0185-configuration-file.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Update text/0185-configuration-file.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Update text/0185-configuration-file.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Update text/0185-configuration-file.md

Co-authored-by: Tamo <tamo@meilisearch.com>

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>
Co-authored-by: Tamo <tamo@meilisearch.com>

* Telemetry - Missing events and options (#186)

* wip spec changes

* update telemetry

* add missing property to the full properties table

* Update text/0034-telemetry-policies.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Update text/0034-telemetry-policies.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Add distrinct_attribute.set property, Task Seen becomes an aggregated event, add missing sub settings properties to Settings Updated event

* Add requests.total_received property to Tasks Seen event

* add missing ranking rules metrics

* Update text/0034-telemetry-policies.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Update text/0034-telemetry-policies.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Update text/0034-telemetry-policies.md

Co-authored-by: Tamo <tamo@meilisearch.com>

* Precise max-index-size option (#187)

* Tasks API - Rename `receivedDocumentsIds` by `providedIds` (#188)

* Rename receivedDocumentsIds by matchedDocuments

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update text/0060-tasks-api.md

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Add missing env vars, brings consistency (#190)

* Swap Indexes API (#192)

* Add new spec file as draft file

* Add specification file

* update spec

* draft open-api.yml changes

* Add errors

* fix typos

* Add Indexes Swapped event

* duplicate_index_found is synchronous

* Apply suggestions from code review

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Add review suggestions

* Precis mention for tasks indexUid target swap in the history

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update text/0061-error-format-and-definitions.md

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update text/0191-swap-indexes-api.md

Co-authored-by: Clément Renault <renault.cle@gmail.com>

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>
Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Add snapshotCreation as a new task type to make it visible in the task history (#193)

* Tasks API - Add task priority order section (#194)

* Add 2.1 Task Priority section

* Precise other tasks priority ordering

* Search API - Page Selection Component (#196)

* Search API - numbered pagination

* Improve numbered pagination explaination

* Update text/0118-search-api.md

* Update text/0118-search-api.md

* Apply suggestions from code review

* Add links

* Update open api

* Add a dot at the end of the title

* Fix links

* Improve page and hitsperpage query params

* Refactor pagination guide

* Fix wording

* Add corner case

* Update open-api.yaml

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update open-api.yaml

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update open-api.yaml

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Apply wording changes from code review

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Apply suggestions from code review

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
Co-authored-by: Bruno Casali <brunoocasali@gmail.com>

* Fix example

* Apply suggestions from code review

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update open-api.yaml

* Update text/0118-search-api.md

* Update links

* Add link to maxtotalhits

* Update text/0118-search-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Improve message in page reference

* Update text/0118-search-api.md

Co-authored-by: Many the fish <legendre.maxime.isn@gmail.com>

* Add telemetry to know the most used search results navigation methods in a batch

* Update text/0118-search-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0118-search-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
Co-authored-by: Many the fish <legendre.maxime.isn@gmail.com>

* Tasks API - Add task cancelation capability (#195)

* Add cancel to task spec

* Remove missing error

* Fix typo on cancels

* Fix IndexUid always null

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Add canceledBy and missing_filters error

* Merge 11.1 filter iwth get and 11.2 filter with post

* Specified every date filter

* Change uid as integer and not as string

* Add auto-batching and error

* Add new route task/cancel api-key

* Add global task note

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0060-tasks-api.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0061-error-format-and-definitions.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Modification due to review

* Modification due to review

* Modification due to review

* Modification due to review

* Fix global task link

* Fix format link

* Add open-api modification

* Remove trailing space

* Add clarification

* Add errors definition

* Update open-api.yml

* fix task uid query parameter name

* Fix collission between url path and query parameters

* fmt open-api.yml

* Add telemetry details

* Add 202_taskCancelation example

* Update originalQuery to originalFilters and update missing_task_filter to missing_task_filters

* matchedTasks is computed when the task is enqueued

* Apply suggestions from code review

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Recall explanation for filter query parameter and mentions that limit and from are valid on

* Fix typo in property name

* Update query paramters name and related error codes when invalid

* Fix missing part of error msg

* Precise valid date formats

* Add supported format for date filters in open-api.yml

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update text/0060-tasks-api.md

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* fix typo

* Update open-api.yaml

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update text/0060-tasks-api.md

* Update text/0060-tasks-api.md

* Tasks API - Add task deletion capability (#198)

* Describes task deletion feature additions

* Update open-api.yml

* Update telemetry-policies

* Update originalQuery to originalFilters

* Follow title structure

* Introduce review feedback

* Branch the right components

* Update text/0060-tasks-api.md

Co-authored-by: Clément Renault <renault.cle@gmail.com>

Co-authored-by: Clément Renault <renault.cle@gmail.com>

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>
Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Update the dump support table with the dumpv6 (#199)

* Settings API - Specify handling of null values when patching settings (#202)

* Specify behavior when patching a setting with partial values and null values.

- Partial value: the setting is unchanged.
- null value: the setting is reset to default.

* Settings: Update error messages to accept the null value

* Add missing task types

* Add canceledTasks details

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>
Co-authored-by: Tamo <tamo@meilisearch.com>
Co-authored-by: Clément Renault <renault.cle@gmail.com>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>
Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
Co-authored-by: Many the fish <legendre.maxime.isn@gmail.com>
Co-authored-by: Amélie <alallema@users.noreply.github.com>
Co-authored-by: Louis Dureuil <louis.dureuil@gmail.com>
bors bot added a commit to meilisearch/meilisearch-rails that referenced this pull request Dec 1, 2022
217: Release v0.8.0 r=brunoocasali a=brunoocasali

This version makes this package compatible with Meilisearch v0.30.0 🎉
Check out the changelog of [Meilisearch v0.30.0](https://github.com/meilisearch/meilisearch/releases/tag/v0.30.0) for more information on the changes.

## ⚠️ Breaking changes

This release is **only** compatible with the latest version of [Meilisearch v0.30.0](https://github.com/meilisearch/meilisearch/releases/tag/v0.30.0) and greater

* Rename meilisearch_host to meilisearch_url (#197) `@AdoPi`

## 🚀 Enhancements

* Add the ability to define `pagination` settings in the model directly. (#208) `@yagince`
* Use **finite pagination** strategy when `pagination_backend` is defined. (#214) `@brunoocasali` 
  Read more about it [here](meilisearch/specifications#196)
 
Thanks again to `@AdoPi,`  `@brunoocasali,` `@curquiza,` and `@yagince!` 🎉



Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Implemented Feature specification has been implemented. OpenAPI Update OpenAPI specification. Q4:2022 Telemetry Update the telemetry collect. v0.30
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants