From 60ad48c733e9a149c6dd5ee365c5931002d8de66 Mon Sep 17 00:00:00 2001 From: Greg Kempe Date: Tue, 6 Aug 2024 09:43:08 +0200 Subject: [PATCH] index judge names as text for use with advanced search --- peachjam_search/documents.py | 6 +++- .../0005_es_mapping_add_judges_text.py | 29 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 peachjam_search/migrations/0005_es_mapping_add_judges_text.py diff --git a/peachjam_search/documents.py b/peachjam_search/documents.py index 134023b5a..497fc3ae8 100644 --- a/peachjam_search/documents.py +++ b/peachjam_search/documents.py @@ -74,7 +74,8 @@ class SearchableDocument(Document): case_summary = fields.TextField() flynote = fields.TextField() order = fields.TextField() - judges = fields.KeywordField(attr="judge.name") + judges = fields.KeywordField() + judges_text = fields.TextField() attorneys = fields.KeywordField(attr="attorney.name") registry = fields.KeywordField(attr="registry.name") @@ -224,6 +225,9 @@ def prepare_judges(self, instance): if instance.doc_type == "judgment": return [j.name for j in instance.judges.all()] + def prepare_judges_text(self, instance): + return self.prepare_judges(instance) + def prepare_attorneys(self, instance): if instance.doc_type == "judgment": return [a.name for a in instance.attorneys.all()] diff --git a/peachjam_search/migrations/0005_es_mapping_add_judges_text.py b/peachjam_search/migrations/0005_es_mapping_add_judges_text.py new file mode 100644 index 000000000..8bba5a4a9 --- /dev/null +++ b/peachjam_search/migrations/0005_es_mapping_add_judges_text.py @@ -0,0 +1,29 @@ +import os + +from django.db import migrations + + +def forwards(apps, schema_editor): + from django.conf import settings + from django_elasticsearch_dsl.registries import registry + + if not settings.DEBUG and os.environ.get("ELASTICSEARCH_HOST"): + for ix in registry.get_indices(): + if not ix._mapping: + continue + print(f"Adding judges_text mapping for {ix._name}") + ix.connection.indices.put_mapping( + index=ix._name, + body={ + "properties": {"judges_text": ix._mapping["judges_text"].to_dict()} + }, + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("peachjam_search", "0004_auto_20240719_1050"), + ] + + operations = [migrations.RunPython(forwards, migrations.RunPython.noop)]