Support comment search

This commit is contained in:
Michael Shamoon 2023-01-04 19:06:06 -08:00
parent 0fd51e35e1
commit 91d4941438

View File

@ -5,6 +5,7 @@ from contextlib import contextmanager
from dateutil.parser import isoparse from dateutil.parser import isoparse
from django.conf import settings from django.conf import settings
from documents.models import Comment
from documents.models import Document from documents.models import Document
from whoosh import classify from whoosh import classify
from whoosh import highlight from whoosh import highlight
@ -49,6 +50,7 @@ def get_schema():
path=TEXT(sortable=True), path=TEXT(sortable=True),
path_id=NUMERIC(), path_id=NUMERIC(),
has_path=BOOLEAN(), has_path=BOOLEAN(),
comments=TEXT(),
) )
@ -90,6 +92,7 @@ def open_index_searcher():
def update_document(writer, doc): def update_document(writer, doc):
tags = ",".join([t.name for t in doc.tags.all()]) tags = ",".join([t.name for t in doc.tags.all()])
tags_ids = ",".join([str(t.id) for t in doc.tags.all()]) tags_ids = ",".join([str(t.id) for t in doc.tags.all()])
comments = ",".join([str(c.comment) for c in Comment.objects.filter(document=doc)])
writer.update_document( writer.update_document(
id=doc.pk, id=doc.pk,
title=doc.title, title=doc.title,
@ -110,6 +113,7 @@ def update_document(writer, doc):
path=doc.storage_path.name if doc.storage_path else None, path=doc.storage_path.name if doc.storage_path else None,
path_id=doc.storage_path.id if doc.storage_path else None, path_id=doc.storage_path.id if doc.storage_path else None,
has_path=doc.storage_path is not None, has_path=doc.storage_path is not None,
comments=comments,
) )
@ -255,7 +259,7 @@ class DelayedFullTextQuery(DelayedQuery):
def _get_query(self): def _get_query(self):
q_str = self.query_params["query"] q_str = self.query_params["query"]
qp = MultifieldParser( qp = MultifieldParser(
["content", "title", "correspondent", "tag", "type"], ["content", "title", "correspondent", "tag", "type", "comments"],
self.searcher.ixreader.schema, self.searcher.ixreader.schema,
) )
qp.add_plugin(DateParserPlugin()) qp.add_plugin(DateParserPlugin())