SearchClient Класс
Клиент для взаимодействия с существующим индексом поиска Azure.
- Наследование
-
azure.search.documents._headers_mixin.HeadersMixinSearchClient
Конструктор
SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)
Параметры
- credential
- AzureKeyCredential или TokenCredential
Учетные данные для авторизации запросов клиентов поиска
- api_version
- str
Версия API поиска, используемая для запросов.
- audience
- str
задает аудиторию, используемую для проверки подлинности в Azure Active Directory (AAD). Аудитория не учитывается при использовании общего ключа. Если аудитория не указана, предполагается аудитория общедоступного облака.
Примеры
Создание SearchClient с помощью ключа API.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]
key = os.environ["AZURE_SEARCH_API_KEY"]
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
Методы
autocomplete |
Получение результатов автозавершения поиска из индекса поиска Azure. коллекция, которая является частью определения индекса. :ключевое слово режим: указывает режим автозаполнения. Значение по умолчанию — "oneTerm". Использование "twoTerms" для получения черепицы и "oneTermWithContext", чтобы использовать текущий контекст при создании автоматически завершенных терминов. Возможные значения: "oneTerm", "twoTerms", "oneTermWithContext". |
close |
SearchClient Закройте сеанс. |
delete_documents |
Удаление документов из индекса поиска Azure действие "удалить" удаляет указанный документ из индекса. Все поля, указанные в операции удаления, кроме ключевого, будут игнорироваться. Если вы хотите удалить отдельное поле из документа, используйте вместо него merge_documents и явно задайте для поля значение Нет. Операции удаления являются идемпотентными. То есть, даже если ключ документа не существует в индексе, при попытке операции удаления с этим ключом возвращается код состояния 200. |
get_document |
Получение документа из индекса поиска Azure по его ключу. |
get_document_count |
Возвращает количество документов в индексе поиска Azure. |
index_documents |
Укажите операции с документами для выполнения в виде пакета. :Поднимает RequestEntityTooLargeError |
merge_documents |
Слияние документов в с существующими документами в индексе поиска Azure. при объединении обновляются указанные поля в существующем документе. Если документ не существует, объединение возвращает ошибку. Поля, указанные в запросе на объединение, заменяют собой существующие поля документа. Это также относится к коллекциям примитивных и сложных типов. |
merge_or_upload_documents |
Объедините документы в существующие документы в индексе поиска Azure или отправьте их, если они еще не существуют. Это действие действует так, как merge_documents , если документ с заданным ключом уже существует в индексе. Если документ не существует, он ведет себя так, как upload_documents с новым документом. |
search |
Поиск документов в индексе поиска Azure. |
suggest |
Получите результаты предложений поиска из индекса поиска Azure. character и не более 100 символов. :p aram str suggester_name: обязательный. Имя средства подбора, указанное в коллекции средств подбора, которая является частью определения индекса. :ключевое слово str filter: выражение OData, которое фильтрует документы, рассматриваемые для предложений. :ключевое слово bool use_fuzzy_matching: значение, указывающее, следует ли использовать нечеткое сопоставление для предложений. базы данных. Значение по умолчанию — false. Если задано значение true, запрос найдет термины, даже если в тексте поиска есть заменяющий или отсутствующий символ. Хотя в некоторых сценариях это обеспечивает лучшие возможности, это снижает производительность, так как запросы нечетких предложений выполняются медленнее и потребляют больше ресурсов. |
upload_documents |
Отправка документов в индекс поиска Azure. действие отправки аналогично upsert, где документ будет вставлен, если он новый, и обновлен или заменен, если он существует. Все поля заменяются в случае обновления. |
autocomplete
Получение результатов автозавершения поиска из индекса поиска Azure.
коллекция, которая является частью определения индекса. :ключевое слово режим: указывает режим автозаполнения. Значение по умолчанию — "oneTerm". Использование
"twoTerms" для получения черепицы и "oneTermWithContext", чтобы использовать текущий контекст при создании автоматически завершенных терминов. Возможные значения: "oneTerm", "twoTerms", "oneTermWithContext".
autocomplete(search_text: str, suggester_name: str, *, mode: str | AutocompleteMode | None = None, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, search_fields: List[str] | None = None, top: int | None = None, **kwargs) -> List[Dict]
Параметры
- filter
- str
Выражение OData, которое фильтрует документы, используемые для создания завершенных терминов для результата автозаполнения.
- use_fuzzy_matching
- bool
Значение , указывающее, следует ли использовать нечеткое сопоставление для запроса автозавершения. Значение по умолчанию — false. Если задано значение true, запрос будет находить термины, даже если в тексте поиска есть заменяющий или отсутствующий символ. Хотя это обеспечивает лучшие возможности в некоторых сценариях, это связано с затратами на производительность, так как нечеткие запросы автозаполнения выполняются медленнее и потребляют больше ресурсов.
- highlight_post_tag
- str
Строковый тег, добавляемый к выделению нажатия. Необходимо задать параметр highlightPreTag. Если этот параметр опущен, выделение нажатий отключено.
- highlight_pre_tag
- str
Строковый тег, который добавляется к выделению нажатия. Должен быть задан с параметром highlightPostTag. Если этот параметр опущен, выделение нажатий отключено.
- minimum_coverage
- float
Число от 0 до 100, указывающее процент индекса, который должен быть охвачен запросом автозаполнения, чтобы запрос сообщал об успешном выполнении. Этот параметр может быть полезен для обеспечения доступности поиска даже для служб с одним реплика. Значение по умолчанию — 80.
Список имен полей, которые следует учитывать при запросе автоматически заполненных терминов. Целевые поля должны быть включены в указанный средство подбора.
- top
- int
Количество автоматически заполненных терминов для извлечения. Это должно быть значение от 1 до 100. Значение по умолчанию — 5.
Возвращаемый тип
Примеры
Получение автозавершения.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.autocomplete(search_text="bo", suggester_name="sg")
print("Autocomplete suggestions for 'bo'")
for result in results:
print(" Completion: {}".format(result["text"]))
close
SearchClient Закройте сеанс.
close() -> None
delete_documents
Удаление документов из индекса поиска Azure
действие "удалить" удаляет указанный документ из индекса. Все поля, указанные в операции удаления, кроме ключевого, будут игнорироваться. Если вы хотите удалить отдельное поле из документа, используйте вместо него merge_documents и явно задайте для поля значение Нет.
Операции удаления являются идемпотентными. То есть, даже если ключ документа не существует в индексе, при попытке операции удаления с этим ключом возвращается код состояния 200.
delete_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Параметры
Возвращаемое значение
Список indexingResult
Возвращаемый тип
Примеры
Удаление существующих документов в индекс
result = search_client.delete_documents(documents=[{"hotelId": "1000"}])
print("Delete new document succeeded: {}".format(result[0].succeeded))
get_document
Получение документа из индекса поиска Azure по его ключу.
get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) -> Dict
Параметры
Возвращаемое значение
Документ, хранящийся в индексе поиска Azure
Возвращаемый тип
Примеры
Получение определенного документа из индекса поиска.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
result = search_client.get_document(key="23")
print("Details for hotel '23' are:")
print(" Name: {}".format(result["hotelName"]))
print(" Rating: {}".format(result["rating"]))
print(" Category: {}".format(result["category"]))
get_document_count
Возвращает количество документов в индексе поиска Azure.
get_document_count(**kwargs: Any) -> int
Возвращаемое значение
Количество документов в индексе
Возвращаемый тип
index_documents
Укажите операции с документами для выполнения в виде пакета.
:Поднимает RequestEntityTooLargeError
index_documents(batch: IndexDocumentsBatch, **kwargs: Any) -> List[IndexingResult]
Параметры
Возвращаемое значение
Список indexingResult
Возвращаемый тип
merge_documents
Слияние документов в с существующими документами в индексе поиска Azure.
при объединении обновляются указанные поля в существующем документе. Если документ не существует, объединение возвращает ошибку. Поля, указанные в запросе на объединение, заменяют собой существующие поля документа. Это также относится к коллекциям примитивных и сложных типов.
merge_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Параметры
Возвращаемое значение
Список indexingResult
Возвращаемый тип
Примеры
Объединение полей с существующими документами в индекс
result = search_client.merge_documents(documents=[{"hotelId": "1000", "rating": 4.5}])
print("Merge into new document succeeded: {}".format(result[0].succeeded))
merge_or_upload_documents
Объедините документы в существующие документы в индексе поиска Azure или отправьте их, если они еще не существуют.
Это действие действует так, как merge_documents , если документ с заданным ключом уже существует в индексе. Если документ не существует, он ведет себя так, как upload_documents с новым документом.
merge_or_upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Параметры
Возвращаемое значение
Список indexingResult
Возвращаемый тип
search
Поиск документов в индексе поиска Azure.
search(search_text: str | None = None, *, include_total_count: bool | None = None, facets: List[str] | None = None, filter: str | None = None, highlight_fields: str | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, query_type: str | QueryType | None = None, scoring_parameters: List[str] | None = None, scoring_profile: str | None = None, search_fields: List[str] | None = None, search_mode: str | SearchMode | None = None, query_answer: str | QueryAnswerType | None = None, query_answer_count: int | None = None, query_answer_threshold: float | None = None, query_caption: str | QueryCaptionType | None = None, query_caption_highlight_enabled: bool | None = None, semantic_configuration_name: str | None = None, select: List[str] | None = None, skip: int | None = None, top: int | None = None, scoring_statistics: str | ScoringStatistics | None = None, session_id: str | None = None, vector_queries: List[VectorQuery] | None = None, vector_filter_mode: str | VectorFilterMode | None = None, semantic_error_mode: str | SemanticErrorMode | None = None, semantic_max_wait_in_milliseconds: int | None = None, **kwargs: Any) -> SearchItemPaged[Dict]
Параметры
- search_text
- str
Выражение запроса полнотекстового поиска; Используйте "*" или опустите этот параметр, чтобы сопоставить все документы.
- include_total_count
- bool
Значение типа , указывающее, следует ли получить общее количество результатов. Значение по умолчанию — false. Установка этого значения в значение true может повлиять на производительность. Обратите внимание на то, что возвращается приблизительное количество результатов.
Список выражений аспектов, применяемых к поисковому запросу. Каждое выражение аспекта содержит имя поля, за которым при необходимости следует разделенный запятыми список пар "имя:значение".
- filter
- str
Выражение OData $filter, применяемого к поисковому запросу.
- highlight_fields
- str
Разделенный запятыми список имен полей, используемых для выделения нажатия. Для выделения попаданий можно использовать только доступные для поиска поля.
- highlight_post_tag
- str
Строковый тег, добавляемый к выделению нажатия. Необходимо задать параметр highlightPreTag. По умолчанию — .
- highlight_pre_tag
- str
Строковый тег, который добавляется к выделению нажатия. Должен быть задан с параметром highlightPostTag. По умолчанию — .
- minimum_coverage
- float
Число от 0 до 100, указывающее процент индекса, который должен быть охвачен поисковым запросом, чтобы запрос сообщал об успешном выполнении. Этот параметр может быть полезен для обеспечения доступности поиска даже для служб с одним реплика. Значение по умолчанию — 100.
Список выражений OData $orderby, по которым сортируются результаты. Каждое выражение может быть именем поля или вызовом функций geo.distance() или search.score(). За каждым выражением может следовать asc для указания по возрастанию, и desc для указания по убыванию. По умолчанию результаты сортируются по возрастанию. При равенстве позиций порядок определяется по показателю совпадения документа. Если orderBy не указан, порядок сортировки по умолчанию убывания по оценке соответствия документа. Может быть не более 32 предложений $orderby.
Значение типа , указывающее синтаксис поискового запроса. Значение по умолчанию — simple. Используйте "full", если в запросе используется синтаксис запроса Lucene. Возможные значения: simple, full, semantic.
Список значений параметров, используемых в функциях оценки (например, referencePointParameter) с использованием формата name-values. Например, если профиль оценки определяет функцию с параметром mylocation, строка параметра будет иметь значение mylocation–122.2,44.8 (без кавычек).
- scoring_profile
- str
Имя профиля для оценки соответствующих показателей, для сопоставления документов с целью сортировки результатов.
Список имен полей, к которым следует область полнотекстового поиска. При использовании поля поиска (fieldName:searchExpression) в полном запросе Lucene имена полей каждого поля выражения поиска имеют приоритет над именами полей, перечисленными в этом параметре.
- search_mode
- str или SearchMode
Значение типа , указывающее, должны ли совпадать все условия поиска, чтобы подсчитать документ как совпадение. Возможные значения: "any", "all".
- query_answer
- str или QueryAnswerType
Этот параметр действителен только в том случае, если тип запроса имеет тип "semantic". Если задано значение , запрос возвращает ответы, извлеченные из ключевых фрагментов в документах с самым высоким рейтингом. Возможные значения: "none", "extractive".
- query_answer_count
- int
Этот параметр действителен, только если тип запроса — "семантический", а ответ запроса — "extractive". Настраивает количество возвращаемых ответов. Число по умолчанию — 1.
- query_answer_threshold
- float
Этот параметр действителен, только если тип запроса — "семантический", а ответ запроса — "extractive". Настраивает число порогового значения достоверности. Число по умолчанию — 0,7.
- query_caption
- str или QueryCaptionType
Этот параметр действителен только в том случае, если тип запроса имеет тип "semantic". Если задано значение , запрос возвращает заголовки, извлеченные из ключевых фрагментов в документах с самым высоким рейтингом. Значение по умолчанию — None. Возможные значения: "none", "extractive".
- query_caption_highlight_enabled
- bool
Этот параметр действителен, только если тип запроса является "семантический", если подпись запроса имеет значение "extractive". Определяет, включено ли выделение. Значение по умолчанию — true.
- semantic_configuration_name
- str
Имя семантической конфигурации, которая будет использоваться при обработке документов для запросов семантики типа.
Список извлекаемых полей. Если этот параметр не указан, возвращаются все поля, помеченные в схеме как подлежащие извлечению.
- skip
- int
Количество пропускаемых результатов поиска. Значение не должно превышать 100 000. Если вам нужно сканировать документы в последовательности, но не удается использовать $skip из-за этого ограничения, рассмотрите возможность использования $orderby на полностью упорядоченном ключе и $filter с запросом диапазона.
- top
- int
Количество получаемых результатов поиска. Его можно использовать в сочетании с $skip для реализации разбиения результатов поиска на стороне клиента. Если результаты усечены из-за разбиения по страницам на стороне сервера, ответ будет содержать маркер продолжения, который можно использовать для выдачи другого запроса поиска для следующей страницы результатов.
- scoring_statistics
- str или ScoringStatistics
Значение типа , указывающее, нужно ли вычислить статистику оценки (например, частоту документов) глобально для более согласованной оценки или локально для меньшей задержки. Значение по умолчанию — local. Используйте "global" для глобальной статистической обработки статистики оценки перед оценкой. Использование глобальной статистики оценки может увеличить задержку поисковых запросов. Возможные значения: local, global.
- session_id
- str
Значение, используемое для создания прикрепленного сеанса, которое может помочь получить более согласованные результаты. Если используется один и тот же sessionId, будет предпринята попытка нацелиться на тот же реплика набор. Будьте осторожны, что многократное повторное использовать одни и те же значения sessionID может помешать балансировке нагрузки запросов между репликами и отрицательно повлиять на производительность службы поиска. Значение, используемое в качестве sessionId, не может начинаться с символа "_".
- semantic_error_mode
- str или SemanticErrorMode
Позволяет пользователю выбрать, должен ли семантический вызов завершиться сбоем (по умолчанию или текущее поведение) или возвратить частичные результаты. Известные значения: partial и fail.
- semantic_max_wait_in_milliseconds
- int
Позволяет пользователю задать верхнюю границу времени, необходимого для завершения обработки семантического обогащения до сбоя запроса.
- vector_queries
- list[VectorQuery]
Параметры запроса для векторных и гибридных поисковых запросов.
- vector_filter_mode
- str или VectorFilterMode
Определяет, применяются ли фильтры до или после выполнения векторного поиска. Значение по умолчанию — preFilter. Известные значения: "postFilter" и "preFilter".
Возвращаемый тип
Примеры
Получение аспектов результатов поиска.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.search(search_text="WiFi", facets=["category,count:3", "parkingIncluded"])
facets: Dict[str, List[str]] = cast(Dict[str, List[str]], results.get_facets())
print("Catgory facet counts for hotels:")
for facet in facets["category"]:
print(" {}".format(facet))
suggest
Получите результаты предложений поиска из индекса поиска Azure.
character и не более 100 символов. :p aram str suggester_name: обязательный. Имя средства подбора, указанное в коллекции средств подбора, которая является частью определения индекса. :ключевое слово str filter: выражение OData, которое фильтрует документы, рассматриваемые для предложений. :ключевое слово bool use_fuzzy_matching: значение, указывающее, следует ли использовать нечеткое сопоставление для предложений.
базы данных. Значение по умолчанию — false. Если задано значение true, запрос найдет термины, даже если в тексте поиска есть заменяющий или отсутствующий символ. Хотя в некоторых сценариях это обеспечивает лучшие возможности, это снижает производительность, так как запросы нечетких предложений выполняются медленнее и потребляют больше ресурсов.
suggest(search_text: str, suggester_name: str, *, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, search_fields: List[str] | None = None, select: List[str] | None = None, top: int | None = None, **kwargs) -> List[Dict]
Параметры
- highlight_post_tag
- str
Строковый тег, добавляемый к выделенному нажатию. Должно быть задано значение highlightPreTag. Если этот параметр опущен, выделение подсказок отключается.
- highlight_pre_tag
- str
Строковый тег, который добавляется к выделению нажатия. Должен быть задан с параметром highlightPostTag. Если этот параметр опущен, выделение подсказок отключается.
- minimum_coverage
- float
Число от 0 до 100, указывающее процент индекса, который должен быть охвачен запросом предложений, чтобы запрос сообщал об успешном выполнении. Этот параметр может быть полезен для обеспечения доступности поиска даже для служб с одним реплика. Значение по умолчанию — 80.
Список выражений OData $orderby, по которым сортируются результаты. Каждое выражение может быть именем поля или вызовом функций geo.distance() или search.score(). За каждым выражением может следовать asc для указания возрастания, или desc, чтобы обозначить по убыванию. По умолчанию результаты сортируются по возрастанию. При равенстве позиций порядок определяется по показателю совпадения документа. Если $orderby не указан, порядок сортировки по умолчанию убывания по оценке соответствия документа. Может быть не более 32 $orderby предложений.
Список имен полей для поиска указанного текста поиска. Целевые поля должны быть включены в указанный средство подбора.
Список извлекаемых полей. Если значение не указано, в результаты будет включено только ключевое поле.
- top
- int
Число предложений, которое необходимо получить. Значение должно быть числом от 1 до 100. Значение по умолчанию — 5.
Возвращаемое значение
Список документов.
Возвращаемый тип
Примеры
Получите предложения поиска.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.suggest(search_text="coffee", suggester_name="sg")
print("Search suggestions for 'coffee'")
for result in results:
hotel = search_client.get_document(key=result["hotelId"])
print(" Text: {} for Hotel: {}".format(repr(result["text"]), hotel["hotelName"]))
upload_documents
Отправка документов в индекс поиска Azure.
действие отправки аналогично upsert, где документ будет вставлен, если он новый, и обновлен или заменен, если он существует. Все поля заменяются в случае обновления.
upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
Параметры
Возвращаемое значение
Список indexingResult
Возвращаемый тип
Примеры
Отправка новых документов в индекс
DOCUMENT = {
"category": "Hotel",
"hotelId": "1000",
"rating": 4.0,
"rooms": [],
"hotelName": "Azure Inn",
}
result = search_client.upload_documents(documents=[DOCUMENT])
print("Upload of new document succeeded: {}".format(result[0].succeeded))
Azure SDK for Python