Funções de pesquisa de texto completo OData no Azure AI Search - search.ismatch
e search.ismatchscoring
O Azure AI Search dá suporte à pesquisa de texto completo no contexto de expressões de filtro OData por meio das search.ismatch
funções e search.ismatchscoring
. Essas funções permitem que você combine a pesquisa de texto completo com filtragem booleana estrita de maneiras que não são possíveis apenas usando o parâmetro de nível search
superior da API de pesquisa.
Nota
As search.ismatch
funções e search.ismatchscoring
só são suportadas em filtros na API de pesquisa. Eles não são suportados nas APIs Sugerir ou Preenchimento Automático.
Sintaxe
O seguinte EBNF (Extended Backus-Naur Form) define a gramática das search.ismatch
funções e 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'"
Um diagrama de sintaxe interativo também está disponível:
Nota
Consulte Referência de sintaxe de expressão OData para Azure AI Search para obter o EBNF completo.
search.ismatch
A search.ismatch
função avalia uma consulta de pesquisa de texto completo como parte de uma expressão de filtro. Os documentos que correspondem à consulta de pesquisa serão retornados no conjunto de resultados. As seguintes sobrecargas desta função estão disponíveis:
search.ismatch(search)
search.ismatch(search, searchFields)
search.ismatch(search, searchFields, queryType, searchMode)
Os parâmetros são definidos na tabela a seguir:
Nome do parâmetro | Tipo | Description |
---|---|---|
search |
Edm.String |
A consulta de pesquisa (na sintaxe de consulta Lucene simples ou completa ). |
searchFields |
Edm.String |
Lista separada por vírgulas de campos pesquisáveis para pesquisar; O padrão é todos os campos pesquisáveis no índice. Ao usar a search pesquisa em campo no parâmetro, os especificadores de campo na consulta Lucene substituem todos os campos especificados nesse parâmetro. |
queryType |
Edm.String |
'simple' ou 'full' ; inadimplência para 'simple' . Especifica qual linguagem de consulta foi usada no search parâmetro. |
searchMode |
Edm.String |
'any' ou 'all' , o padrão é .'any' Indica se algum ou todos os termos de pesquisa no search parâmetro devem ser correspondidos para contar o documento como uma correspondência. Ao usar os operadores Lucene Boolean no search parâmetro, eles terão precedência sobre este parâmetro. |
Todos os parâmetros acima são equivalentes aos parâmetros de solicitação de pesquisa correspondentes na API de pesquisa.
A search.ismatch
função retorna um valor do tipo Edm.Boolean
, que permite compô-la com outras subexpressões de filtro usando os operadores lógicos booleanos.
Nota
O Azure AI Search não suporta o uso search.ismatch
ou search.ismatchscoring
dentro de expressões lambda. Isso significa que não é possível escrever filtros sobre coleções de objetos que possam correlacionar correspondências de pesquisa de texto completo com correspondências de filtro estritas no mesmo objeto. Para obter mais detalhes sobre essa limitação, bem como exemplos, consulte Solução de problemas de filtros de coleção no Azure AI Search. Para obter informações mais detalhadas sobre por que essa limitação existe, consulte Noções básicas sobre filtros de coleção no Azure AI Search.
search.ismatchscoring
A search.ismatchscoring
função, como a search.ismatch
função, retorna true
para documentos que correspondem à consulta de pesquisa de texto completo passada como um parâmetro. A diferença entre eles é que a pontuação de relevância dos documentos correspondentes à search.ismatchscoring
consulta contribuirá para a pontuação geral do documento, enquanto no caso do search.ismatch
, a pontuação do documento não será alterada. As seguintes sobrecargas desta função estão disponíveis com parâmetros idênticos aos de search.ismatch
:
search.ismatchscoring(search)
search.ismatchscoring(search, searchFields)
search.ismatchscoring(search, searchFields, queryType, searchMode)
search.ismatch
As funções e search.ismatchscoring
podem ser usadas na mesma expressão de filtro.
Exemplos
Encontre documentos com a palavra "beira-mar". Esta consulta de filtro é idêntica a uma solicitação de pesquisa com search=waterfront
.
search.ismatchscoring('waterfront')
Encontre documentos com a palavra "hostel" e classificação maior ou igual a 4, ou documentos com a palavra "motel" e classificação igual a 5. Note, este pedido não poderia ser expresso sem a search.ismatchscoring
função.
search.ismatchscoring('hostel') and Rating ge 4 or search.ismatchscoring('motel') and Rating eq 5
Encontre documentos sem a palavra "luxo".
not search.ismatch('luxury')
Encontre documentos com a frase "vista para o mar" ou classificação igual a 5. A search.ismatchscoring
consulta será executada apenas em campos HotelName
e Rooms/Description
.
Documentos que correspondam apenas à segunda cláusula da disjunção também serão devolvidos - hotéis com Rating
igual a 5. Para deixar claro que esses documentos não corresponderam a nenhuma das partes pontuadas da expressão, eles serão devolvidos com pontuação igual a zero.
search.ismatchscoring('"ocean view"', 'Rooms/Description,HotelName') or Rating eq 5
Encontre documentos onde os termos "hotel" e "aeroporto" estão a menos de 5 palavras um do outro na descrição do hotel, e onde não é permitido fumar em pelo menos alguns dos quartos. Esta consulta usa a linguagem de consulta Lucene completa.
search.ismatch('"hotel airport"~5', 'Description', 'full', 'any') and Rooms/any(room: not room/SmokingAllowed)
Encontre documentos que tenham uma palavra que comece com as letras "lux" no campo Descrição. Esta consulta usa a pesquisa de prefixo em combinação com search.ismatch
o .
search.ismatch('lux*', 'Description')