diff --git a/arkindex/documents/api/search.py b/arkindex/documents/api/search.py index 5ef8b4bc4d738522e5a38023c9a9a55fbd74fabc..4860f73c673393057bae0a5125eb7c7655b9784f 100644 --- a/arkindex/documents/api/search.py +++ b/arkindex/documents/api/search.py @@ -31,6 +31,7 @@ class ElementSearch(SearchAPIView): query=None, element_type=None, transcription_type=None, + structural_metadata=None, date_lt=None, date_gte=None, min_score=0.0): @@ -52,6 +53,12 @@ class ElementSearch(SearchAPIView): search = search.filter('range', date_range=date_range) + if structural_metadata: + search = search.filter( + 'wildcard', + structure='*{}*'.format(structural_metadata) + ) + if element_type: search = search.filter('match', type=element_type) diff --git a/arkindex/documents/serializers/search.py b/arkindex/documents/serializers/search.py index e49aa1768f088ee0fd05778be5f5340c0e2c704b..1520225f32ce643b140716950193d6caaea0508c 100644 --- a/arkindex/documents/serializers/search.py +++ b/arkindex/documents/serializers/search.py @@ -20,6 +20,7 @@ class SearchQuerySerializer(serializers.Serializer): score = serializers.FloatField(source='min_score', min_value=0.0, max_value=1.0, default=0.0) date_gte = serializers.CharField(default=None) date_lte = serializers.CharField(source='date_lt', default=None) + structural_metadata = serializers.CharField(default=None) element_type = serializers.SlugField(default=None) transcription_type = EnumField(enum=TranscriptionType, default=None) corpus = serializers.UUIDField(source='corpus_id', default=None)