Skip to content

Commit a1ccab5

Browse files
committed
Update .keyword -> .raw for open search queries
1 parent 44c682a commit a1ccab5

File tree

5 files changed

+41
-36
lines changed

5 files changed

+41
-36
lines changed

calisphere/collection_views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,10 @@ def _parse_custom_facets(self):
161161
{
162162
'form_name': custom_facet['facet_field'],
163163
'facet_field': (
164-
f"{custom_facet['facet_field'][:-3]}.keyword"),
164+
f"{custom_facet['facet_field'][:-3]}.raw"),
165165
'display_name': custom_facet['label'],
166166
'filter_field': (
167-
f"{custom_facet['facet_field'][:-3]}.keyword"),
167+
f"{custom_facet['facet_field'][:-3]}.raw"),
168168
'sort_by': custom_facet['sort_by'],
169169
'faceting_allowed': True
170170
}
@@ -310,7 +310,7 @@ def get_mosaic(self):
310310
repositories.append(repository['name'])
311311

312312
if self.index == 'es':
313-
sort = ("sort_title.keyword", "asc")
313+
sort = ("sort_title.raw", "asc")
314314
else:
315315
sort = ("sort_title", "asc")
316316

calisphere/constants.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,32 @@
3636
FacetDisplay = namedtuple(
3737
'FacetDisplay', 'facet, display')
3838

39-
# solr schema fields that have a `_ss` varient for facets
39+
# index schema fields that are of type=keyword so we can get
40+
# facets directly without needing an _ss or .raw suffix
41+
UCLDC_SCHEMA_TERM_FIELDS = [
42+
'calisphere-id',
43+
'id',
44+
'campus_name',
45+
'campus_data',
46+
'campus_url',
47+
'campus_id',
48+
'collection_name',
49+
'collection_data',
50+
'collection_url',
51+
'collection_id',
52+
'sort_collection_data',
53+
'repository_name',
54+
'repository_data',
55+
'repository_url',
56+
'repository_id',
57+
'rights_uri',
58+
'url_item',
59+
'fetcher_type',
60+
'mapper_type'
61+
]
62+
63+
# index schema fields that are of type=text and thus need a
64+
# solr _ss or opensearch .raw suffix to get facets
4065
UCLDC_SCHEMA_FACETS = [
4166
FacetDisplay("title", "title"),
4267
FacetDisplay("alternative_title", "alternative title"),
@@ -70,7 +95,7 @@
7095
for fd in UCLDC_SCHEMA_FACETS
7196
]
7297
UCLDC_ES_SCHEMA_FACETS = [
73-
FacetDisplayField(fd.facet, fd.display, f"{fd.facet}.keyword")
98+
FacetDisplayField(fd.facet, fd.display, f"{fd.facet}.raw")
7499
for fd in UCLDC_SCHEMA_FACETS
75100
]
76101

calisphere/es_cache_retry.py

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
""" logic for cache / retry for es (opensearch) and JSON from registry
22
"""
33

4+
from calisphere.constants import UCLDC_SCHEMA_TERM_FIELDS
45
from future import standard_library
56
from django.core.cache import cache
67
from django.conf import settings
@@ -166,9 +167,9 @@ def es_mlt(item_id):
166167
"query": {
167168
"more_like_this": {
168169
"fields": [
169-
"title.keyword",
170+
"title.raw",
170171
"collection_data",
171-
"subject.keyword",
172+
"subject.raw",
172173
],
173174
"like": [
174175
{"_id": item_id}
@@ -241,33 +242,12 @@ def query_encode(query_string: str = None,
241242
es_params['query'] = es_filters[0]
242243

243244
if facets:
244-
keyword_fields = [
245-
'calisphere-id',
246-
'id',
247-
'campus_name',
248-
'campus_data',
249-
'campus_url',
250-
'campus_id',
251-
'collection_name',
252-
'collection_data',
253-
'collection_url',
254-
'collection_id',
255-
'sort_collection_data',
256-
'repository_name',
257-
'repository_data',
258-
'repository_url',
259-
'repository_id',
260-
'rights_uri',
261-
'url_item',
262-
'fetcher_type',
263-
'mapper_type'
264-
]
265245
aggs = {}
266246
for facet in facets:
267-
if facet in keyword_fields or facet[-8:] == '.keyword':
247+
if facet in UCLDC_SCHEMA_TERM_FIELDS or facet[-4:] == '.raw':
268248
field = facet
269249
else:
270-
field = f'{facet}.keyword'
250+
field = f'{facet}.raw'
271251

272252
aggs[facet] = {
273253
"terms": {

calisphere/facet_filter_type.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class ESRelationFF(ESFacetFilterType):
170170
form_name = 'relation_ss'
171171
facet_field = 'relation'
172172
display_name = 'Relation'
173-
filter_field = 'relation.keyword'
173+
filter_field = 'relation.raw'
174174
sort_by = 'value'
175175
faceting_allowed = False
176176

@@ -186,7 +186,7 @@ class ESTypeFF(ESFacetFilterType):
186186
form_name = 'type_ss'
187187
facet_field = 'type'
188188
display_name = 'Type of Item'
189-
filter_field = 'type.keyword'
189+
filter_field = 'type.raw'
190190

191191

192192
class DecadeFF(FacetFilterType):
@@ -201,7 +201,7 @@ class ESDecadeFF(ESFacetFilterType):
201201
form_name = 'facet_decade'
202202
facet_field = 'date'
203203
display_name = 'Decade'
204-
filter_field = 'date.keyword'
204+
filter_field = 'date.raw'
205205
sort_by = 'value'
206206

207207

calisphere/search_form.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ def solr_escape(text):
1010

1111
class SortField(object):
1212
default = 'relevance'
13-
no_keyword = 'a'
13+
default_without_query_string = 'a'
1414

1515
def __init__(self, request):
1616
if (request.get('q')
1717
or request.getlist('rq')
1818
or request.getlist('fq')):
1919
self.sort = request.get('sort', self.default)
2020
else:
21-
self.sort = request.get('sort', self.no_keyword)
21+
self.sort = request.get('sort', self.default_without_query_string)
2222

2323

2424
class SearchForm(object):
@@ -389,7 +389,7 @@ class ESCampusCarouselForm(CampusCarouselForm):
389389

390390
class AltSortField(SortField):
391391
default = 'oldest-end'
392-
no_keyword = 'oldest-end'
392+
default_without_query_string = 'oldest-end'
393393

394394

395395
class CollectionFacetValueForm(CollectionForm):

0 commit comments

Comments
 (0)