From 8d6fc2c4b63c81c9f984e0597c219c139db4a1eb Mon Sep 17 00:00:00 2001
From: vrigal <rigal@teklia.com>
Date: Mon, 2 Dec 2019 15:19:33 +0100
Subject: [PATCH] Search indexed structural metadata

---
 arkindex/documents/api/search.py         | 7 +++++++
 arkindex/documents/serializers/search.py | 1 +
 2 files changed, 8 insertions(+)

diff --git a/arkindex/documents/api/search.py b/arkindex/documents/api/search.py
index 5ef8b4bc4d..4860f73c67 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 e49aa1768f..1520225f32 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)
-- 
GitLab