Skip to content
Snippets Groups Projects
Commit a24a5293 authored by Valentin Rigal's avatar Valentin Rigal
Browse files

Basic reference search

parent d92af8fd
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@ from arkindex.documents.search import search_elements_post, search_entities_post
from arkindex.project.mixins import SearchAPIMixin
from arkindex.project.elastic import ESElement, ESEntity
from elasticsearch_dsl.query import Q, Nested, FunctionScore
from elasticsearch_dsl.function import FieldValueFactor
from elasticsearch_dsl.function import FieldValueFactor, BoostFactor
class SearchAPIView(SearchAPIMixin, ListAPIView):
......@@ -31,7 +31,6 @@ class ElementSearch(SearchAPIView):
query=None,
element_type=None,
transcription_type=None,
reference=None,
date_lt=None,
date_gte=None,
min_score=0.0):
......@@ -53,20 +52,16 @@ class ElementSearch(SearchAPIView):
search = search.filter('range', date_range=date_range)
if reference:
search = search.filter(
'wildcard',
references='*{}*'.format(reference.lower())
)
if element_type:
search = search.filter('match', type=element_type)
nested_query = Q('range', transcriptions__score={'gte': min_score})
if query:
nested_query &= Q('simple_query_string', query=query, fields=['transcriptions.text'])
if transcription_type:
nested_query &= Q('match', transcriptions__type=transcription_type.value)
if query:
#nested_query &= Q('simple_query_string', query=query, fields=['transcriptions.text'])
##search.query |= Q('term', references=query.lower())
nested_query = Q('wildcard', references='*{}*'.format(query.lower()))
search = search.query(Nested(
path='transcriptions',
......@@ -76,7 +71,8 @@ class ElementSearch(SearchAPIView):
query=nested_query,
functions=[FieldValueFactor(field='transcriptions.score')],
),
))
)| Q('wildcard', references='*{}*'.format(query.lower()))
)
return search
......
......@@ -20,7 +20,6 @@ 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)
reference = 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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment