GotoUsuke's picture
Upload folder using huggingface_hub
ab4488b verified
# -------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# --------------------------------------------------------------------------
from typing import Type, Union, List, cast
from ._generated.models import AutocompleteRequest, SearchRequest, SuggestRequest
class _QueryBase:
_request_type: Union[Type[AutocompleteRequest], Type[SearchRequest], Type[SuggestRequest]] = cast(
Union[Type[AutocompleteRequest], Type[SearchRequest], Type[SuggestRequest]],
None,
)
def __init__(self, **kwargs) -> None:
self._request = self._request_type(**kwargs) # pylint:disable=not-callable
def __repr__(self) -> str:
return "<{} [{}]>".format(self.__class__.__name__, self._request.search_text)[:1024]
def filter(self, expression: str) -> None:
"""Add a `filter` expression for the search results.
:param expression: An ODate expression of for the query filter.
:type expression: str
"""
self._request.filter = expression
@property
def request(self) -> Union[AutocompleteRequest, SearchRequest, SuggestRequest]:
"""The service request for this operation.
:return: The service request for this operation.
:rtype: AutocompleteRequest or SearchRequest or SuggestRequest
"""
return self._request
class AutocompleteQuery(_QueryBase):
"""Represent an autocomplete query again an Azure Search index."""
_request_type = AutocompleteRequest
__doc__ = AutocompleteRequest.__doc__
class SearchQuery(_QueryBase):
"""Represent a rich search query again an Azure Search index."""
_request_type = SearchRequest
__doc__ = SearchRequest.__doc__
def order_by(self, *fields: Union[str, List[str]]) -> None:
"""Update the `orderby` property for the search results.
:param fields: A list of fields for the query result to be ordered by.
:type fields: str or list[str]
:raises: ValueError
"""
if not fields:
raise ValueError("At least one field must be provided")
if not fields:
raise ValueError("At least one field must be provided")
selects = []
for field in fields:
if isinstance(field, list):
selects.append(",".join(field))
else:
selects.append(field)
request = cast(SearchRequest, self._request)
request.order_by = ",".join(selects)
def select(self, *fields: Union[str, List[str]]) -> None:
"""Update the `select` property for the search results.
:param fields: A list of fields for the query result to return.
:type fields: str or list[str]
:raises: ValueError
"""
if not fields:
raise ValueError("At least one field must be provided")
selects = []
for field in fields:
if isinstance(field, list):
selects.append(",".join(field))
else:
selects.append(field)
request = cast(SearchRequest, self._request)
request.select = ",".join(selects)
class SuggestQuery(_QueryBase):
"""Represent a search suggestion query again an Azure Search index."""
_request_type = SuggestRequest
__doc__ = SuggestRequest.__doc__
def order_by(self, *fields: Union[str, List[str]]) -> None:
"""Update the `orderby` property for the search results.
:param fields: A list of fields for the query result to be ordered by.
:type fields: str or list[str]
:raises: ValueError
"""
if not fields:
raise ValueError("At least one field must be provided")
if not fields:
raise ValueError("At least one field must be provided")
selects = []
for field in fields:
if isinstance(field, list):
selects.append(",".join(field))
else:
selects.append(field)
request = cast(SuggestRequest, self._request)
request.order_by = ",".join(selects)
def select(self, *fields: Union[str, List[str]]) -> None:
"""Update the `select` property for the search results.
:param fields: A list of fields for the query result to return.
:type fields: str or list[str]
:raises: ValueError
"""
if not fields:
raise ValueError("At least one field must be provided")
selects = []
for field in fields:
if isinstance(field, list):
selects.append(",".join(field))
else:
selects.append(field)
request = cast(SuggestRequest, self._request)
request.select = ",".join(selects)