inveniosoftware / invenio-records-rest

Invenio records REST API module.
https://invenio-records-rest.readthedocs.io
MIT License
4 stars 62 forks source link

docs: expanding sections related to search #180

Open dinosk opened 6 years ago

dinosk commented 6 years ago

We can extend the records-rest documentation (after https://github.com/inveniosoftware/invenio-records-rest/pull/170 is merged) with the following:

Query parser
~~~~~~~~~~~~

/records/?q=....

RECORDS_REST_ENDPOINTS['search_factory']
By default the easy query string query parser is used. Features:
- field names + operators
- exists/missing
- ranges
- wildcards, regular expressions
- fuziness
- proximity search
- boosting

Legacy Invenio query parser

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax

- Replacing the query parser.

Suggesters
~~~~~~~~~~

/records/_suggest?text=...

- Config
- Make sure data is properly indexed.
suggesters[my_url_param_to_complete]

Advanced customization
~~~~~~~~~~~~~~~~~~~~~~
Replace the search factory to do very advanced querying - i.e. exact control over
what is sent to elasticsearch.

Max results

Error handlers

Record class Fetch record from ES instead of database.

Serialization
-------------
Key feature is transforming records from JSON to other formats. E.g. JSON-JSON,
removing sensitive information, enriching, stable output format, or standardized formats like
DataCite, DublinCore,

Content negotiation
~~~~~~~~~~~~~~~~~~~
- Mimetype -> Serializer
- Versioning via mimetypes

Workflow
~~~~~~~~
Preprocess into same format (database vs ES)
Transform record
Serialize data format

Data formats
~~~~~~~~~~~~~~~~~~~~
- JSON: JSON-LD, CSL
- XML: DataCite, DublinCore, MARCXML
- Text: Citation formatting

Transformations
~~~~~~~~~~~~~~~
- JSON-JSON: Marshmallow

Citation formatting
~~~~~~~~~~~~~~~~~~~
Example:
transform to

Tombstones and redirection
--------------------------
error handlers

Access control
--------------
Principles
- search filtering
- factories

impact of es query parser and hidden fields

Factories
~~~~~~~~~

Deserialization
---------------
Create, Update, Delete support
- Loaders
- Minters/Fetchers