MCPcopy
hub / github.com/django/django / SearchHeadline

Class SearchHeadline

django/contrib/postgres/search.py:318–377  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

316
317
318class SearchHeadline(Func):
319 function = "ts_headline"
320 template = "%(function)s(%(expressions)s%(options)s)"
321 output_field = TextField()
322
323 def __init__(
324 self,
325 expression,
326 query,
327 *,
328 config=None,
329 start_sel=None,
330 stop_sel=None,
331 max_words=None,
332 min_words=None,
333 short_word=None,
334 highlight_all=None,
335 max_fragments=None,
336 fragment_delimiter=None,
337 ):
338 if not hasattr(query, "resolve_expression"):
339 query = SearchQuery(query)
340 options = {
341 "StartSel": start_sel,
342 "StopSel": stop_sel,
343 "MaxWords": max_words,
344 "MinWords": min_words,
345 "ShortWord": short_word,
346 "HighlightAll": highlight_all,
347 "MaxFragments": max_fragments,
348 "FragmentDelimiter": fragment_delimiter,
349 }
350 self.options = {
351 option: value for option, value in options.items() if value is not None
352 }
353 expressions = (expression, query)
354 if config is not None:
355 config = SearchConfig.from_parameter(config)
356 expressions = (config, *expressions)
357 super().__init__(*expressions)
358
359 def as_sql(self, compiler, connection, function=None, template=None):
360 options_sql = ""
361 options_params = ()
362 if self.options:
363 options_params = (
364 ", ".join(
365 connection.ops.compose_sql(f"{option}=%s", [value])
366 for option, value in self.options.items()
367 ),
368 )
369 options_sql = ", %s"
370 sql, params = super().as_sql(
371 compiler,
372 connection,
373 function=function,
374 template=template,
375 options=options_sql,

Calls 1

TextFieldClass · 0.90