Skip to content
Back to top
View this page
Edit this page

# Result

Basic types for the typification of results.

- `Result` base class

- `LegacyResult` for internal use only

class searx.result_types._base.Result(*, url: str | None = None, engine: str | None = '', parsed_url: ParseResult | None = None)

  Base class of all result types Result Types.

  url: str | None

    A link related to this result

  engine: str | None

    Name of the engine this result comes from. In case of plugins a prefix `plugin:` is set, in case of answerer prefix `answerer:` is set.

    The field is optional and is initialized from the context if necessary.

  parsed_url: ParseResult | None

    `urllib.parse.ParseResult` of `Result.url`.

    The field is optional and is initialized from the context if necessary.

  normalize_result_fields()

    Normalize fields `url` and `parse_sql`.

    - If field `url` is set and field `parse_url` is unset, init `parse_url` from field `url`. The `url` field is initialized with the resulting value in `parse_url`, if `url` and `parse_url` are not equal.

  filter_urls(filter_func: Callable[[Result | LegacyResult, str, str], str | bool])

    A filter function is passed in the `filter_func` argument to filter and/or modify the URLs.

    The filter function receives the `result object` as the first argument and the field name (`str`) in the second argument. In the third argument the URL string value is passed to the filter function.

    The filter function is applied to all fields that contain a URL, in addition to the familiar `url` field, these include fields such as:

        ["url", "iframe_src", "audio_src", "img_src", "thumbnail_src", "thumbnail"]

    and the `urls` list of items of the infobox.

    For each field, the filter function is called and returns a bool or a string value:

    - `True`: leave URL in field unchanged

    - `False`: remove URL field from result (or remove entire result)

    - `str`: modified URL to be used instead

    See Filter URLs example.

  defaults_from(other: Result)

    Fields not set in self will be updated from the field values of the other. If a field is set (exists) but contains an empty string or the value `None`, it is also considered not set.

class searx.result_types._base.LegacyResult(*args: Any, **kwargs: Any)

  A wrapper around a legacy result item. The SearXNG core uses this class for untyped dictionaries / to be downward compatible.

  This class is needed until we have implemented an `Result` class for each result type and the old usages in the codebase have been fully migrated.

  There is only one place where this class is used, in the `searx.results.ResultContainer`.

  Attention

  Do not use this class in your own implementations!

  filter_urls(filter_func: Callable[[Result | LegacyResult, str, str], str | bool])

    See `Result.filter_urls`