Ejemplo n.º 1
0
class ApplicationApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='ID')
    title = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/datasets',
        doc_field_name='title',
        translated=True,
        search_path='title')
    notes = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/datasets',
        doc_field_name='notes',
        translated=True,
        search_path='notes')

    tag = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='tag',
        translated=True,
        search_path='tags',
        query_field='tags')

    q = search_fields.MultiMatchField(
        query_fields=['title^4', 'notes^2'],
        nested_query_fields={'datasets': [
            'title',
        ]})
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.sort',
            'modified': 'modified',
            'created': 'created'
        },
        doc_template='docs/generic/fields/sort_field.html',
        doc_base_url='/institutions',
        doc_field_name='sort')

    facet = search_fields.FacetField(ApplicationAggs)

    class Meta:
        strict = True
        ordered = True
Ejemplo n.º 2
0
class ApiSearchRequest(ListingSchema):
    q = CommonSearchField(doc_template='docs/generic/fields/query_field.html',
                          doc_base_url='/search',
                          doc_field_name='q')

    advanced = fields.StringField()
    sort = fields.SortField(
        sort_fields={
            'title': 'title.{lang}.sort',
            'date': 'search_date',
            'views_count': 'views_count',
        },
        doc_base_url='/search',
    )

    facet = fields.FacetField(DataAggregations)

    id = fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/search',
        doc_field_name='ID',
        query_field='_id',
    )
    model = fields.FilterField(
        StringTermSchema,
        doc_template='docs/search/fields/model.html',
        doc_base_url='/search',
        doc_field_name='models',
    )
    institution = fields.FilterField(InstitutionFilterSchema)
    category = fields.FilterField(DatasetCategoryFilterSchema)
    categories = fields.FilterField(DatasetCategoriesFilterSchema)
    format = fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/search',
        doc_field_name='format',
        query_field='formats')
    types = fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/search',
        doc_field_name='types',
    )
    openness_score = fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/search',
        doc_field_name='openness score',
        query_field='openness_scores')
    visualization_types = fields.FilterField(
        ListTermsSchema,
        query_field='visualization_types',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/search',
        doc_field_name='visualization type')
    date = fields.FilterField(
        DateTermSchema,
        query_field='search_date',
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/search',
        doc_field_name='search_date')
    institution_type = fields.FilterField(
        StringTermSchema,
        query_field='institution_type',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/search',
        doc_field_name='institution_type')
    source = fields.FilterField(SourceFilterSchema)
    license_code = fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/search',
        doc_field_name='license code',
        query_field='license_code')
    update_frequency = fields.FilterField(
        StringTermSchema,
        query_field='update_frequency',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/search',
        doc_field_name='update_frequency')
    has_high_value_data = fields.FilterField(
        BooleanTermSchema,
        query_field='has_high_value_data',
        doc_template='docs/generic/fields/boolean_term_field.html',
        doc_base_url='/search',
        doc_field_name='has_high_value_data')
    if is_enabled('S39_filter_by_geodata.be'):
        regions = fields.FilterField(RegionsFilterSchema)
    if is_enabled('S39_showcases.be'):
        showcase_category = fields.FilterField(
            StringTermSchema,
            doc_template='docs/generic/fields/string_term_field.html',
            doc_base_url='/search',
            doc_field_name='showcase_category',
        )
        showcase_types = fields.FilterField(
            StringTermSchema,
            query_field='showcase_types',
            doc_template='docs/generic/fields/string_term_field.html',
            doc_base_url='/search',
            doc_field_name='showcase types')
        showcase_platforms = fields.FilterField(
            StringTermSchema,
            query_field='showcase_platforms',
            doc_template='docs/generic/fields/string_term_field.html',
            doc_base_url='/search',
            doc_field_name='showcase platforms')

    @validates('q')
    def validate_q(self, queries, down_limit=2, up_limit=3000):
        for q in queries:
            if len(q) < down_limit:
                msg = _(
                    'The entered phrase should be at least %(limit)s characters long'
                ) % {
                    'limit': down_limit
                }
                raise ValidationError(msg)
            elif len(q) > up_limit:
                msg = _(
                    'The entered phrase should be at most %(limit)s characters long'
                ) % {
                    'limit': up_limit
                }
                raise ValidationError(msg)

    @validates('advanced')
    def validate_advanced(self, adv):
        allowed = ('any', 'all', 'exact', 'synonyms')
        if adv not in allowed:
            msg = _('Advanced option should take one of values: ') + ', '.join(
                allowed)
            raise ValidationError(msg)

    class Meta:
        strict = True
        ordered = True
class DatasetApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='ID')
    title = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/datasets',
        doc_field_name='title',
        translated=True,
        search_path='title')
    notes = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/datasets',
        doc_field_name='notes',
        translated=True,
        search_path='notes')
    category = search_fields.FilterField(CategoryFilterSchema)
    categories = search_fields.FilterField(CategoriesFilterSchema)
    institution = search_fields.FilterField(InstitutionFilterSchema)
    application = search_fields.FilterField(ApplicationFilterSchema)
    tag = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='tag',
        translated=True,
        search_path='tags',
        query_field='tags')
    keyword = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='keyword',
        search_path='keywords',
        query_field='keywords.name',
        condition=Term(keywords__language=get_language),
        nested_search=True,
    )
    format = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='format',
        query_field='formats')
    types = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='types',
        query_field='types')
    openness_score = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='openness score',
        query_field='openness_scores',
    )
    resource = search_fields.FilterField(ResourceFilterSchema)
    visualization_types = search_fields.FilterField(
        ListTermsSchema,
        query_field='visualization_types',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='visualization types')
    created = search_fields.FilterField(
        DateTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='created',
    )
    q = search_fields.MultiMatchField(
        query_fields={
            'title': ['title^4'],
            'notes': ['notes^2']
        },
        nested_query_fields={'resources': [
            'title',
        ]})
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.sort',
            'modified': 'modified',
            'created': 'created',
            'views_count': 'views_count',
            'verified': 'verified',
        },
        doc_base_url='/datasets',
        missing='id',
    )

    facet = search_fields.FacetField(DatasetAggregations)
    include = search_fields.StringField(
        data_key='include',
        description=
        'Allow the client to customize which related resources should be returned in included section.',
        allowEmptyValue=True,
    )

    class Meta:
        strict = True
        ordered = True
Ejemplo n.º 4
0
class ResourceApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(NumberTermSchema,
                                   doc_template='docs/generic/fields/number_term_field.html',
                                   doc_base_url='/resources',
                                   doc_field_name='ID'
                                   )
    title = search_fields.FilterField(StringMatchSchema,
                                      doc_template='docs/generic/fields/string_match_field.html',
                                      doc_base_url='/resources',
                                      doc_field_name='title',
                                      translated=True,
                                      search_path='title'
                                      )
    description = search_fields.FilterField(StringMatchSchema,
                                            doc_template='docs/generic/fields/string_match_field.html',
                                            doc_base_url='/resources',
                                            doc_field_name='description',
                                            translated=True,
                                            search_path='description'
                                            )
    format = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/resources',
        doc_field_name='format'
    )
    media_type = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/resources',
        doc_field_name='media type'
    )
    openness_score = search_fields.FilterField(NumberTermSchema,
                                               doc_template='docs/resources/fields/openness_score.html',
                                               doc_base_url='/resources',
                                               doc_field_name='openness score'
                                               )
    q = search_fields.MultiMatchField(
        query_fields=['title^4', 'description^2'],
        nested_query_fields={'dataset': ['title', ]},
        doc_template='docs/generic/fields/query_field.html',
        doc_base_url='/resources',
        doc_field_name='q'
    )
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.raw',
            'modified': 'modified',
            'created': 'created',
            'verified': 'verified',
            'data_date': 'data_date',
        },
        doc_template='docs/generic/fields/sort_field.html',
        doc_base_url='/resources',
        doc_field_name='sort'
    )
    dataset = search_fields.FilterField(ResourceDatasetFilterField,
                                        doc_template='docs/resources/fields/dataset.html',
                                        doc_base_url='/resources',
                                        doc_field_name='dataset'
                                        )
    facet = search_fields.FacetField(ResourceAggregations)

    class Meta:
        strict = True
        ordered = True
Ejemplo n.º 5
0
class ApplicationApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/applications',
        doc_field_name='ID')
    title = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/applications',
        doc_field_name='title',
        translated=True,
        search_path='title')
    notes = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/applications',
        doc_field_name='notes',
        translated=True,
        search_path='notes')
    has_image_thumb = search_fields.TermsField()

    tag = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/applications',
        doc_field_name='tag',
        translated=True,
        search_path='tags',
        query_field='tags')

    keyword = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/applications',
        doc_field_name='keyword',
        search_path='keywords',
        query_field='keywords.name',
        condition=Term(keywords__language=get_language),
        nested_search=True,
    )

    q = search_fields.MultiMatchField(
        query_fields={
            'title': ['title^4'],
            'notes': ['notes^2']
        },
        nested_query_fields={'datasets': [
            'title',
        ]})
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.sort',
            'modified': 'modified',
            'created': 'created',
            'views_count': 'views_count',
            'main_page_position': 'main_page_position',
        },
        doc_base_url='/applications',
    )

    facet = search_fields.FacetField(ApplicationAggs)
    is_featured = search_fields.ExistsField("main_page_position")

    class Meta:
        strict = True
        ordered = True
Ejemplo n.º 6
0
class InstitutionApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(NumberTermSchema,
                                   doc_template='docs/generic/fields/number_term_field.html',
                                   doc_base_url='/institutions',
                                   doc_field_name='ID'
                                   )
    slug = search_fields.FilterField(StringTermSchema,
                                     doc_template='docs/generic/fields/string_term_field.html',
                                     doc_base_url='/institutions',
                                     doc_field_name='slug',
                                     translated=True,
                                     search_path='slug'
                                     )
    city = search_fields.FilterField(StringTermSchema,
                                     doc_template='docs/generic/fields/string_term_field.html',
                                     doc_base_url='/institutions',
                                     doc_field_name='city'
                                     )
    regon = search_fields.FilterField(StringTermSchema,
                                      doc_template='docs/generic/fields/string_term_field.html',
                                      doc_base_url='/institutions',
                                      doc_field_name='regon'
                                      )
    street = search_fields.FilterField(StringTermSchema,
                                       doc_template='docs/generic/fields/string_term_field.html',
                                       doc_base_url='/institutions',
                                       doc_field_name='street'
                                       )
    postal_code = search_fields.FilterField(StringTermSchema,
                                            doc_template='docs/generic/fields/string_term_field.html',
                                            doc_base_url='/institutions',
                                            doc_field_name='postal code'
                                            )

    email = search_fields.FilterField(StringTermSchema,
                                      doc_template='docs/generic/fields/string_term_field.html',
                                      doc_base_url='/institutions',
                                      doc_field_name='email address'
                                      )
    org_type = search_fields.FilterField(StringTermSchema,
                                         data_key='type',
                                         query_field='institution_type',
                                         doc_template='docs/generic/fields/string_term_field.html',
                                         doc_base_url='/institutions',
                                         doc_field_name='type'
                                         )
    tel = search_fields.FilterField(StringTermSchema,
                                    doc_template='docs/generic/fields/string_term_field.html',
                                    doc_base_url='/institutions',
                                    doc_field_name='tel',
                                    )
    fax = search_fields.FilterField(StringTermSchema,
                                    doc_template='docs/generic/fields/string_term_field.html',
                                    doc_base_url='/institutions',
                                    doc_field_name='fax'
                                    )
    website = search_fields.FilterField(StringTermSchema,
                                        doc_template='docs/generic/fields/string_term_field.html',
                                        doc_base_url='/institutions',
                                        doc_field_name='website'
                                        )

    title = search_fields.FilterField(StringMatchSchema,
                                      doc_template='docs/generic/fields/string_match_field.html',
                                      doc_base_url='/institutions',
                                      doc_field_name='title',
                                      translated=True,
                                      search_path='title'

                                      )
    description = search_fields.FilterField(StringMatchSchema,
                                            doc_template='docs/generic/fields/string_match_field.html',
                                            doc_base_url='/institutions',
                                            doc_field_name='description',
                                            translated=True,
                                            search_path='title'
                                            )

    q = search_fields.MultiMatchField(
        query_fields={'title': ['title^4'], 'description': ['description^2']},
        nested_query_fields={'datasets': ['title', ]},
        doc_template='docs/generic/fields/query_field.html',
        doc_base_url='/institutions',
        doc_field_name='q'
    )
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.sort',
            "city": "city.{lang}",
            'modified': 'modified',
            'created': 'created'
        },
        doc_base_url='/institutions',
    )
    facet = search_fields.FacetField(InstitutionApiAggregations)
    include = search_fields.StringField(
        data_key='include',
        description='Allow the client to customize which related resources should be returned in included section.',
        allowEmptyValue=True,
    )

    class Meta:
        strict = True
        ordered = True
class ResourceApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/resources',
        doc_field_name='ID')
    title = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/resources',
        doc_field_name='title',
        translated=True,
        search_path='title')
    description = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/resources',
        doc_field_name='description',
        translated=True,
        search_path='description')
    format = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/resources',
        doc_field_name='format')
    media_type = search_fields.FilterField(
        StringTermSchema,
        query_field='type',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/resources',
        doc_field_name='media type')
    type = search_fields.FilterField(
        StringTermSchema,
        query_field='type',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/resources',
        doc_field_name='type')
    visualization_type = search_fields.FilterField(
        ListTermsSchema,
        query_field='visualization_types',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/resources',
        doc_field_name='visualization type')
    openness_score = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/resources/fields/openness_score.html',
        doc_base_url='/resources',
        doc_field_name='openness score')
    created = search_fields.FilterField(
        DateTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/resources',
        doc_field_name='created')
    q = search_fields.MultiMatchField(
        query_fields={
            'title': ['title^4'],
            'description': ['description^2']
        },
        nested_query_fields={'dataset': [
            'title',
        ]},
        doc_template='docs/generic/fields/query_field.html',
        doc_base_url='/resources',
        doc_field_name='q')
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.raw',
            'modified': 'modified',
            'created': 'created',
            'verified': 'verified',
            'data_date': 'data_date',
            'views_count': 'views_count',
        },
        doc_base_url='/resources',
    )
    dataset = search_fields.FilterField(
        ResourceDatasetFilterField,
        doc_template='docs/resources/fields/dataset.html',
        doc_base_url='/resources',
        doc_field_name='dataset')
    facet = search_fields.FacetField(ResourceAggregations)
    include = search_fields.StringField(
        data_key='include',
        description=
        'Allow the client to customize which related resources should be returned in included section.',
        allowEmptyValue=True,
    )

    class Meta:
        strict = True
        ordered = True
Ejemplo n.º 8
0
class DatasetApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='ID')
    title = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/datasets',
        doc_field_name='title',
        translated=True,
        search_path='title')
    notes = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/datasets',
        doc_field_name='notes',
        translated=True,
        search_path='notes')
    category = search_fields.FilterField(CategoryFilterSchema)
    institution = search_fields.FilterField(InstitutionFilterSchema)
    tag = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='tag',
        translated=True,
        search_path='tags',
        query_field='tags')
    format = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='format',
        query_field='formats')
    openness_score = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/datasets',
        doc_field_name='openness score')
    resource = search_fields.FilterField(ResourceFilterSchema)

    q = search_fields.MultiMatchField(
        query_fields=['title^4', 'notes^2'],
        nested_query_fields={'resources': [
            'title',
        ]})
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.sort',
            'modified': 'modified',
            'created': 'created',
            'verified': 'verified',
        },
        doc_template='docs/generic/fields/sort_field.html',
        doc_base_url='/institutions',
        doc_field_name='sort')

    facet = search_fields.FacetField(DatasetAggregations)

    class Meta:
        strict = True
        ordered = True
Ejemplo n.º 9
0
class InstitutionApiSearchRequest(ListingSchema):
    id = search_fields.FilterField(
        NumberTermSchema,
        doc_template='docs/generic/fields/number_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='ID')
    slug = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='slug',
        translated=True,
        search_path='slug')
    city = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='city')
    regon = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='regon')
    street = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='street')
    postal_code = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='postal code')

    email = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='email address')
    org_type = search_fields.FilterField(
        StringTermSchema,
        data_key='type',
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='type')
    tel = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='tel')
    fax = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='fax')
    website = search_fields.FilterField(
        StringTermSchema,
        doc_template='docs/generic/fields/string_term_field.html',
        doc_base_url='/institutions',
        doc_field_name='website')

    title = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/institutions',
        doc_field_name='title',
        translated=True,
        search_path='title')
    description = search_fields.FilterField(
        StringMatchSchema,
        doc_template='docs/generic/fields/string_match_field.html',
        doc_base_url='/institutions',
        doc_field_name='description',
        translated=True,
        search_path='title')

    q = search_fields.MultiMatchField(
        query_fields=['title^4', 'description^2'],
        nested_query_fields={'datasets': [
            'title',
        ]},
        doc_template='docs/generic/fields/query_field.html',
        doc_base_url='/institutions',
        doc_field_name='q')
    sort = search_fields.SortField(
        sort_fields={
            'id': 'id',
            'title': 'title.{lang}.sort',
            "city": "city.{lang}",
            'modified': 'modified',
            'created': 'created'
        },
        doc_template='docs/generic/fields/sort_field.html',
        doc_base_url='/institutions',
        doc_field_name='sort')
    facet = search_fields.FacetField(InstitutionApiAggregations)

    class Meta:
        strict = True
        ordered = True