code: def apply(
      self,
      query_list: Iterable[str],
      threshold: float,
      start: int = 0,
      count: int | None = None,
  ) -> list[tuple[float, int]]:
      _wids_dict = self._wids_dict
      _wordinfo = self.index._wordinfo
      l_pow = float.__pow__
  
      L = []
      qw = 0.0
  
      for term in query_list:
          wid, weight = _wids_dict.get(term, (None, None))
          if wid is None:
              continue
          docs = _wordinfo[wid]
          L.append((docs, weight))
          qw += l_pow(weight, 2)
  
      results = mass_weightedUnion(L)
  
      qw = math.sqrt(qw)
      filtered_results: list[tuple[float, int]] = results.byValue(
          qw * threshold
      )
  
      return filtered_results
  
file_path: dedupe/dedupe/canopy_index.py
imports: from __future__ import annotations
  import logging
  import math
  from typing import Iterable
  import numpy
  from BTrees.Length import Length
  from zope.index.text.cosineindex import CosineIndex
  from zope.index.text.lexicon import Lexicon
  from zope.index.text.setops import mass_weightedUnion
  from zope.index.text.textindex import TextIndex
label_desc: Use image node_id 3 for calling the CanopyIndex obj's underlying member method code with example usage: obj.apply(query_list, threshold, start, count) and returns: filtered_results