class_docstr: Handles connection and execution of the Qdrant statements.
class_docstr_tok: ["Handles","connection","and","execution","of","the","Qdrant","statements","."]
docstr: Map the filter operator to the Qdrant filter
      We use a match and not a dict so as to conditionally construct values
      With a dict, all the values the values will be constructed
      Generating models.Range() with a str type value fails
  
  Args:
      operator (FilterOperator): FilterOperator specified in the query. Eg >=, <=, =
      value (Any): Value specified in the query
  
  Raises:
      Exception: If an unsupported operator is specified
  
  Returns:
      dict: A dict of Qdrant filtering clauses
docstr_tok: ["Map","the","filter","operator","to","the","Qdrant","filter","We","use","a","match","and","not","a","dict","so","as","to","conditionally","construct","values","With","a","dict",",","all","the","values","the","values","will","be","constructed","Generating","models.Range","(",")","with","a","str","type","value","fails","Args",":","operator","(","FilterOperator",")",":","FilterOperator","specified","in","the","query",".","Eg",">","=",",","<","=",",","=","value","(","Any",")",":","Value","specified","in","the","query","Raises",":","Exception",":","If","an","unsupported","operator","is","specified","Returns",":","dict",":","A","dict","of","Qdrant","filtering","clauses"]
code: def _get_qdrant_filter(
      self, operator: FilterOperator, value: Any
  ) -> dict:
      """Map the filter operator to the Qdrant filter
          We use a match and not a dict so as to conditionally construct values
          With a dict, all the values the values will be constructed
          Generating models.Range() with a str type value fails
  
      Args:
          operator (FilterOperator): FilterOperator specified in the query. Eg >=, <=, =
          value (Any): Value specified in the query
  
      Raises:
          Exception: If an unsupported operator is specified
  
      Returns:
          dict: A dict of Qdrant filtering clauses
      """
      if operator == FilterOperator.EQUAL:
          return {"match": models.MatchValue(value=value)}
      elif operator == FilterOperator.NOT_EQUAL:
          return {"match": models.MatchExcept(**{"except": [value]})}
      elif operator == FilterOperator.LESS_THAN:
          return {"range": models.Range(lt=value)}
      elif operator == FilterOperator.LESS_THAN_OR_EQUAL:
          return {"range": models.Range(lte=value)}
      elif operator == FilterOperator.GREATER_THAN:
          return {"range": models.Range(gt=value)}
      elif operator == FilterOperator.GREATER_THAN_OR_EQUAL:
          return {"range": models.Range(gte=value)}
      else:
          raise Exception(
              f"Operator {operator} is not supported by Qdrant!"
          )
  
imports: from collections import OrderedDict
  from typing import Any, List, Optional
  from itertools import zip_longest
  from qdrant_client import QdrantClient, models
  import pandas
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE
  from mindsdb.integrations.libs.response import RESPONSE_TYPE
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerStatusResponse
  from mindsdb.integrations.libs.vectordatabase_handler import FilterCondition, FilterOperator, TableField, VectorStoreHandler
  from mindsdb.utilities import log
label_desc: Use image node_id 10 for calling the QdrantHandler obj's underlying member method code with example usage: obj._get_qdrant_filter(operator, value) and returns: dict, dict, dict, dict, dict, dict