Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции полнотекстового поиска OData в Поиск с использованием ИИ Azure -
Примечание.
Поиск с использованием ИИ Azure доступна через портал Azure, REST API и Azure SDKs. Он также лежит в основе Foundry IQ — управляемого слоя знаний, который преобразует корпоративный контент в многократно используемые базы знаний с учетом разрешений доступа для агентов на портале Microsoft Foundry.
Служба "Поиск ИИ Azure" поддерживает полнотекстовый поиск в контексте выражений фильтров OData через функции search.ismatch и search.ismatchscoring. Эти функции позволяют объединить полнотекстовый поиск со строгой логической фильтрацией способами, которые невозможны при простом использовании параметра верхнего уровня searchAPI поиска.
Примечание.
Функции search.ismatch и search.ismatchscoring поддерживаются только в фильтрах API поиска. Они не поддерживаются в API предложения или автозаполнения .
Синтаксис
Следующая EBNF (расширенная форма Бэкуса-Наура) определяет грамматику функций search.ismatch и search.ismatchscoring:
search_is_match_call ::=
'search.ismatch'('scoring')?'(' search_is_match_parameters ')'
search_is_match_parameters ::=
string_literal(',' string_literal(',' query_type ',' search_mode)?)?
query_type ::= "'full'" | "'simple'"
search_mode ::= "'any'" | "'all'"
Кроме того, вам может помочь интерактивная схема синтаксиса:
Примечание.
См. справочник по синтаксису выражений OData для Поиск с использованием ИИ Azure для полного EBNF.
search.ismatch
Функция search.ismatch вычисляет полнотекстовый поисковый запрос как часть выражения фильтрации. Соответствующие документы возвращаются в результирующем наборе. Доступны следующие перегрузки этой функции:
search.ismatch(search)search.ismatch(search, searchFields)search.ismatch(search, searchFields, queryType, searchMode)
Определения параметров приведены в следующей таблице:
| Наименование параметра | Тип | Описание |
|---|---|---|
search |
Edm.String |
Поисковый запрос (в простом или полном синтаксисе запроса Lucene). |
searchFields |
Edm.String |
Разделенный запятыми список полей, где вести поиск. По умолчанию это все поля индекса, в которых возможен поиск. При использовании поля поиска в параметре search описатели полей в запросе Lucene переопределяют все поля, указанные в этом параметре. |
queryType |
Edm.String |
'simple' или 'full'; по умолчанию — 'simple'. Указывает, какой язык запроса использовался в параметре search. |
searchMode |
Edm.String |
'any' или 'all'; по умолчанию — 'any'. Указывает, учитываются ли отдельные или все условия поиска в параметре search, чтобы документ был засчитан, как соответствующий запросу. При использовании логических операторов Lucene в параметре search они имеют приоритет над этим параметром. |
Все вышеперечисленные параметры эквивалентны соответствующим параметрам поискового запроса в API поиска.
Функция search.ismatch возвращает значение типа Edm.Boolean, что позволяет сочетать его с другими подвыражениями фильтра, используя логические операторы.
Примечание.
Поиск ИИ Azure не поддерживает использование search.ismatch или search.ismatchscoring внутри лямбда-выражений. Это означает, что невозможно создавать фильтры по коллекциям объектов, которые могут сопоставлять совпадения полнотекстового поиска с строгими совпадениями фильтра в одном объекте. Дополнительные сведения об этом ограничении, а также примеры см. в разделе "Устранение неполадок с фильтрами коллекции" в службе "Поиск ИИ Azure". Дополнительные сведения о том, почему это ограничение существует, см. в статье "Общие сведения о фильтрах коллекций" в службе "Поиск ИИ Azure".
search.ismatchscoring
Функция search.ismatchscoring, как и функция search.ismatch, возвращает значение true, если документ соответствует поисковому запросу, переданному в параметре. Разница между ними заключается в том, что оценка релевантности документов, соответствующих search.ismatchscoring запросу, вносит вклад в общую оценку документа, в то время как оценка search.ismatchдокумента не изменяется. Следующие перегрузки этой функции доступны с параметрами, идентичными параметрам функции search.ismatch:
search.ismatchscoring(search)search.ismatchscoring(search, searchFields)search.ismatchscoring(search, searchFields, queryType, searchMode)
Это означает, что обе функции, search.ismatch и search.ismatchscoring, можно использовать в одном и том же выражении фильтра.
Примеры
Найти документы со словом "набережная". Этот запрос фильтрации идентичен поисковому запросу с search=waterfront:
search.ismatchscoring('waterfront')
Ниже приведен полный синтаксис запроса для этого запроса, который можно запустить в обозревателе поиска на портале Azure. Выходные данные состоят из совпадений на набережной, воде и фронте.
{
"search": "*",
"select": "HotelId, HotelName, Description",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('waterfront')"
}
Найдите документы со словом "пул" и рейтингом больше или равно 4, или со словом "мотель" и рейтингом равным 3.2. Обратите внимание, что этот запрос не может быть выражен без search.ismatchscoring функции.
search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2
Ниже приведен полный синтаксис запроса для этого запроса для обозревателя поиска. Выходные данные состоят из совпадений на отелях с бассейнами с рейтингом больше 4 , или мотелей с рейтингом равным 3,2.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatchscoring('pool') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 3.2"
}
Найти документы без слова роскошь.
not search.ismatch('luxury')
Ниже приведен полный синтаксис запроса для этого запроса. Выходные данные состоят из совпадений по термину роскошь.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "not search.ismatch('luxury')"
}
Найдите документы с фразой "океан" или рейтингом, равным 3,2. Запрос search.ismatchscoring выполняется только для полей HotelName и Description.
Ниже приведен полный синтаксис запроса для этого запроса. Документы, соответствующие только второй части дизъюнкции, также возвращаются (в частности, отели с Rating равных 3.2). Чтобы было ясно, что эти документы не соответствовали ни одной из оцененных частей выражения, они возвращаются с оценкой, равной нулю.
{
"search": "*",
"select": "HotelId, HotelName, Description, Rating",
"searchMode": "all",
"queryType": "full",
"count": true,
"filter": "search.ismatchscoring('ocean', 'Description,HotelName') or Rating eq 3.2"
}
Выходные данные состоят из 4 совпадений: отели, которые упоминают "океан" в описании или имени отеля, или отелях с рейтингом 3,2. Обратите внимание, что оценка поиска равна нулю для совпадений во втором предложении.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1.6076145,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Rating": 4.2
},
{
"@search.score": 1.0594962,
"HotelId": "41",
"HotelName": "Windy Ocean Motel",
"Description": "Oceanfront hotel overlooking the beach features rooms with a private balcony and 2 indoor and outdoor pools. Inspired by the natural beauty of the island, each room includes an original painting of local scenes by the owner. Rooms include a mini fridge, Keurig coffee maker, and flatscreen TV. Various shops and art entertainment are on the boardwalk, just steps away.",
"Rating": 3.5
},
{
"@search.score": 0,
"HotelId": "40",
"HotelName": "Trails End Motel",
"Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"Rating": 3.2
},
{
"@search.score": 0,
"HotelId": "26",
"HotelName": "Planetary Plaza & Suites",
"Description": "Extend Your Stay. Affordable home away from home, with amenities like free Wi-Fi, full kitchen, and convenient laundry service.",
"Rating": 3.2
}
]
}
Найдите документы, где термины "отель" и "аэропорт" находятся в пределах 5 слов друг от друга в описании отеля, и где курение не допускается по крайней мере в некоторых номерах.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Ниже приведен полный синтаксис запроса. Чтобы запустить в обозревателе поиска, экранируйте внутренние кавычки с символом обратной косой черты.
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('\"hotel airport\"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)"
}
Выходные данные состоят из одного документа, в котором термины "отель" и "аэропорт" находятся в пределах 5 слов. Курение разрешено для нескольких номеров в большинстве отелей, включая один из этих результатов поиска.
{
"@odata.count": 1,
"value": [
{
"@search.score": 1,
"HotelId": "40",
"HotelName": "Trails End Motel",
"Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"Tags": [
"bar",
"free wifi",
"restaurant"
],
"Rating": 3.2
}
]
}
Найти документы, которые содержат в поле "Описание" слово, начинающееся с букв "lux". В этом запросе используется префиксный поиск в сочетании с search.ismatch.
search.ismatch('lux*', 'Description')
Ниже приведен полный запрос:
{
"search": "*",
"select": "HotelId, HotelName, Description, Tags, Rating",
"searchMode": "all",
"queryType": "simple",
"count": true,
"filter": "search.ismatch('lux*', 'Description')"
}
Результаты состоят из следующих совпадений.
{
"@odata.count": 4,
"value": [
{
"@search.score": 1,
"HotelId": "18",
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Tags": [
"view",
"pool",
"restaurant"
],
"Rating": 4.2
},
{
"@search.score": 1,
"HotelId": "13",
"HotelName": "Luxury Lion Resort",
"Description": "Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.",
"Tags": [
"bar",
"concierge",
"restaurant"
],
"Rating": 4.1
},
{
"@search.score": 1,
"HotelId": "16",
"HotelName": "Double Sanctuary Resort",
"Description": "5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.",
"Tags": [
"view",
"pool",
"restaurant",
"bar",
"continental breakfast"
],
"Rating": 4.2
},
{
"@search.score": 1,
"HotelId": "14",
"HotelName": "Twin Vortex Hotel",
"Description": "New experience in the making. Be the first to experience the luxury of the Twin Vortex. Reserve one of our newly-renovated guest rooms today.",
"Tags": [
"bar",
"restaurant",
"concierge"
],
"Rating": 4.4
}
]
}