Referência de sintaxe FAST Query Language (FQL)

Saiba mais sobre como criar consultas de pesquisa complexa da Pesquisa do SharePoint usando FQL (FAST Query Language). Esta referência descreve os elementos de uma consulta FQL e como usar especificações de propriedade, expressões de token e operadores em consultas FQL.

Introdução a subexpressões e expressões de linguagem de consulta e FQL no SharePoint

O FQL (FAST Query Language) é uma linguagem de consulta avançada que permite que os desenvolvedores realizem pesquisas exatas e restrinjam o escopo da pesquisa a valores pertencentes a uma propriedade gerenciada específica ou um índice de texto completo.

Uma expressão de linguagem de consulta pode conter subexpressões aninhadas que incluem termos de consulta, especificações de propriedade e operadores, conforme descrito na Tabela 1.

Tabela 1. Subexpressões em expressões de linguagem de consulta

Item Descrição
Expressões de token Um ou mais termos de consulta, frases ou valores numéricos para pesquisar em uma consulta.
Especificação de propriedade Um índice de propriedade ou texto completo para corresponder à expressão afetada.
Operadores As palavras-chave que especificam operações Boolianas (como AND e OR) ou outras restrições para operandos (como FILTER.)

Exemplo de consulta FQL

O exemplo de consulta FQL a seguir procura os termos "olá" e "mundo" na propriedade gerenciada body de um item indexado:

body:string("hello world", mode="and")

No exemplo:

  • body: limita o escopo da consulta à propriedade gerenciada body no item.
  • "hello world" é o operando para o operador STRING que indica os termos para pesquisar.
  • mode="and" indica que o operador de consulta lógica AND será aplicado a "hello world".

O comprimento de consultas de FAST Query Language é limitado a 2.048 caracteres.

Especificação de propriedade no FQL

Uma especificação de propriedade limita o escopo da expressão afetada a regiões específicas do conteúdo indexado. Uma região pode ser identificada por um índice de texto inteiro ou uma propriedade gerenciada.

Propriedades gerenciadas de tipo Text e YesNo são avaliadas como texto. Todos os outros tipos de propriedades gerenciadas, incluindo o tipo Datetime, são avaliados como valores numéricos.

Se você não incluir uma especificação de propriedade de uma expressão, o mecanismo de pesquisa tentará fazer a correspondência com o índice de texto completo padrão definido no esquema de índice.

O nome da propriedade sempre deve preceder dois-pontos (operador In), e operadores numéricos sempre devem incluir uma especificação de propriedade.

Uma especificação de propriedade (o operador In) pode ser aplicada às seguintes entidades de consulta:

  • Um único termo ou frase, da seguinte maneira:

    author:shakespeare
    
    title:"to be or not to be"
    
  • Um operador, por exemplo, o operador STRING, da seguinte maneira:

    title:string("to be or not to be")
    

    Nesse caso, a especificação da propriedade se aplica à expressão completa do operador.

Exemplos

Cada uma das seguintes expressões corresponde a itens que têm "muito" e "nada" na propriedade gerenciada title.

title:and(much, nothing)

and(title:much, title:nothing)

title:string("much nothing", mode="and")

Expressões de token em FQL

As expressões de token são palavras, frases ou valores numéricos correspondentes ao índice.

Uma expressão de token de texto pode ser uma única palavra ou frase entre aspas duplas.

Uma expressão numérica de token pode ser uma expressão de intervalo de valores ou um único valor.

Expressões curinga

Uma expressão curinga indica um único termo ou frase que inclui o caractere de asterisco ("*"). O asterisco sugere uma correspondência de zero ou mais caracteres, exceto espaços em branco. O FQL dá suporte à pesquisa de prefixo para propriedades gerenciadas de texto individuais e índices de texto completo.

Exemplos de expressões curinga

Esta é uma lista de usos válidos de expressões curinga no FQL:

  • text*
  • string("this examp*")

Expressões de termo numérico

Cada expressão de termo numérico deve incluir uma especificação de propriedade de um tipo de dados de esquema de índice compatível. A Tabela 2 lista os tipos de dados numéricos que podem ser usados no FQL.

Tabela 2. Tipos de dados numéricos que podem ser utilizados no FQL

Tipo FQL Tipos de esquema de índice compatíveis Descrição
Int Integer Inteiro de 64 bits.
Float Double Ponto flutuante de 64 bits (dupla precisão).
Decimal Decimal Decimal de 128 bits
Datetime Datetime Um valor de data e hora. O suporte a data/hora no FQL habilita as mesmas operações numéricas nos valores de data/hora que outros valores numéricos.

Expressões de consulta de data e hora

O FQL fornece o tipo de dados datetime para data e hora.

Os seguintes formatos de datetime compatíveis com ISO 8601 têm suporte em consultas:

  • AAAA-MM-DD
  • AAAA-MM-DDThh:mm:ss
  • YYYY-MM-DDThh:mm:ssZ
  • YYYY-MM-DDThh:mm:ssfrZ

Nestes formatos de datetime:

  • AAAA especifica um ano de quatro dígitos.

    Observação

    Há suporte apenas para anos com quatro dígitos.

  • MM especifica um mês de dois dígitos. Por exemplo, 01 = janeiro.

  • DD especifica um dia de dois dígitos do mês (01 a 31).

  • T especifica a letra "T".

  • hh especifica uma hora de dois dígitos (de 00 a 23); Indicação AM/PM não é permitida..

  • mm especifica um minuto de dois dígitos (de 00 a 59).

  • ss especifica um segundo de dois dígitos (de 00 a 59).

  • fr especifica uma fração opcional de segundos, ss; entre 1 e 7 dígitos que se seguem a . após os segundos. Por exemplo, 2012-09-27T11:57:34.1234567.

Todos os valores de data/hora devem ser especificados de acordo com o UTC (Tempo Universal Coordenado), também conhecido como fuso de horário GMT (Hora de Greenwich). O identificador de zona de tempo do UTC (um caractere "Z" à direita) é opcional.

Palavras reservadas, caracteres especiais e escape

As palavras a seguir são reservadas no FQL.

and, or, any, andnot, count, decimal, rank, near, onear, int, in32, int64, float, double, datetime, max, min, range, phrase, scope, filter, not, string, starts-with, ends-with, equals, words, xrank.

Se você quiser expressar qualquer uma dessas palavras como termos em expressões de consulta, coloque-as entre aspas duplas, conforme mostrado nos seguintes exemplos:

  • or("any", "and", "xrank")
  • string("any and xrank", mode="OR")
  • phrase(this, is, a, "phrase")

Dica

Palavras e caracteres reservados não diferenciam maiúsculas de minúsculas, mas o uso de caracteres minúsculos é recomendado para compatibilidade futura.

O FQL nem sempre exige que uma cadeia de caracteres seja colocada entre aspas duplas. Por exemplo, and(cat, dog) é FQL válido, embora cat e dog não estejam entre aspas duplas. No entanto, recomendamos usar aspas duplas para evitar conflitos com palavras reservadas.

Os termos de consulta são indexados de acordo com a configuração de localidade. O processo de geração de tokens remove caracteres especiais. Como os caracteres especiais são removidos, as expressões FQL a seguir são equivalentes.

and("[king]", "<queen>")

and("king", "queen")

Quando uma consulta inclui termos de entrada do usuário ou outro aplicativo, use o operador string("<query terms>", mode="AND|OR|PHRASE") para evitar conflito com palavras reservadas na linguagem de consulta. Você também deve remover possíveis aspas duplas da consulta fornecida pelo usuário.

Operadores FQL

Os operadores FQL (FAST Query Language) são palavras-chave que especificam operações Boolianas outras restrições para operandos. A sintaxe do operador FQL é a seguinte:

[property-spec:]operator(operand [,operand]* [, parameter="value"]*)

Na sintaxe:

  • property-spec é uma especificação de propriedade opcional seguida do operador "in".
  • operator é uma palavra-chave que especifica a execução de uma operação.
  • operand é uma expressão de termo ou outro operador.
  • parameter é o nome de um valor que altera o comportamento do operador.
  • valor é o valor a ser usado para o nome do parâmetro.

Os nomes de operadores, os nomes de parâmetros e os valores de texto de parâmetro diferenciam maiúsculas de minúsculas. Os espaços em branco são permitidos no corpo do operador, mas são ignorados, a menos que estejam entre aspas duplas. O comprimento de consultas de FAST Query Language é limitado a 2.048 caracteres.

A Tabela 3 lista os tipos de operadores com suporte no FQL.

Tabela 3. Tipos de operador suportados por FQL

Tipo Descrição Operadores
String Permite que você especifique operações de consulta em uma cadeia de caracteres de termos. Esse é o operador mais comum para usar em termos de texto. STRING
Boolean Permite combinar termos e subexpressões em uma consulta. AND, OR, ANY, ANDNOT, NOT, COUNT, COUNT
Proximidade Permite especificar a proximidade dos termos de consulta em uma sequência de texto correspondente. NEAR, ONEAR, PHRASE, STARTS-WITH, ENDS-WITH, EQUALS
Numeric Permite especificar condições numéricas na consulta. RANGE , INT, FLOAT, DATETIME, DECIMAL
Relevância Permite afetar a avaliação de relevância de uma consulta. XRANK e FILTRO

A Tabela 4 fornece uma lista de operadores com suporte.

Tabela 4. Operadores suportados pelo FQL

Operator Descrição Tipo
AND Retorna somente os itens que correspondem a todos os operandos AND. Boolean
ANDNOT Retorna somente os itens que correspondem ao primeiro operando e que não correspondem aos operandos subsequentes. Boolean
ANY Semelhante ao operador OR, exceto que a classificação dinâmica (a pontuação de relevância em result set.md) não é afetada pelo número de operandos correspondentes nem pela distância entre os termos no item. Boolean
COUNT Permite especificar o número de ocorrências de termos de consulta que um item deve incluir para ser retornado como um resultado. O operando pode ser um termo de consulta simples, uma frase ou termos de consulta curinga. Boolean
DATETIME Fornece tipos explícitos de valores numéricos. A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino. Numeric
DECIMAL Fornece tipos explícitos de valores numéricos. A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino. Numeric
ENDS-WITH Especifica que uma palavra ou frase deve aparecer no final de uma propriedade gerenciada. Proximidade
EQUALS Especifica que uma palavra, um termo de frase ou uma frase deve fornecer uma correspondência de token exata com a propriedade gerenciada. Proximidade
FILTER Usado para consultar os metadados ou outros dados estruturados. Relevância
FLOAT Fornece tipos explícitos de valores numéricos. A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino. Numeric
INT Fornece tipos explícitos de valores numéricos. A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino. Numeric
NEAR Restringe o conjunto de resultados a itens que têm N termos a uma certa distância entre si. Proximidade
NOT Retorna somente os itens que excluem o operando. Boolean
ONEAR A variante ordenada de NEAR e requer uma correspondência ordenada dos termos. O operador ONEAR pode ser usado para restringir o conjunto de resultados a itens que têm N termos a uma certa distância. Retorna somente os itens que não correspondem ao operando. O operando pode ser qualquer expressão FQL válida.uma ou outra. Proximidade
OU Retorna somente os itens que correspondem a pelo menos um dos operandos OR. Itens correspondentes terão uma classificação dinâmica maior (pontuação de relevância em result set.md) se mais operandos OR forem correspondentes. Boolean
PHRASE Retorna somente os itens que correspondem a uma cadeia de caracteres de tokens exata. Proximidade
RANGE Habilita expressões correspondentes ao intervalo. O operador RANGE é usado para propriedades gerenciadas numéricas e de data/hora. Numeric
STARTS-WITH Especifica que uma palavra ou frase deve aparecer no início de uma propriedade gerenciada. Proximidade
STRING Definir uma condição de correspondência Booliana para uma cadeia de caracteres de texto. String
XRANK Permite aumentar a classificação dinâmica de itens com base em determinadas ocorrências de termos sem alterar os itens que correspondem à consulta. Uma expressão XRANK tem um componente que deve ser correspondente e um ou mais componentes que contribuem apenas para a classificação dinâmica. Relevância

Observação

No SharePoint, o operador RANK foi preterido e não terá mais efeito. Use XRANK em vez disso.

E

Retorna somente os itens que correspondem a todos os operandos AND. Os operandos podem ser um termo único ou qualquer subexpressão FQL válida.

Sintaxe

and(operand, operand [, operand]*)

Parâmetros

Não aplicável.

Exemplos

A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "gato", "cachorro" e "raposa".

and(cat, dog, fox)

ANDNOT

Retorna somente os itens que correspondem ao primeiro operando e que não correspondem aos operandos subsequentes. Os operandos podem ser um termo único ou qualquer subexpressão FQL válida.

Sintaxe

andnot(operand, operand [,operand]*)

Parâmetros

Não aplicável.

Exemplos

Exemplo 1. A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "gato", mas não "cachorro".

andnot(cat, dog)

Exemplo 2. A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "cachorro", mas não contém "beagle" nem "chihuahua".

andnot(dog, beagle, chihuahua)

ANY

Observação

No SharePoint, o operador ANY foi preterido. Use o operador OR em vez disso.

Semelhante ao operador OR, exceto que a classificação dinâmica (a classificação de relevância no conjunto de resultados) não é afetada pelo número de operandos correspondentes nem pela distância entre os termos no item. Os operandos podem ser um termo único ou qualquer subexpressão FQL válida.

O componente de classificação dinâmica para essa parte da consulta se baseia no termo com melhor correspondência na expressão ANY.

Observação

A diferença em relação a OR está relacionada apenas à classificação no conjunto de resultados. O mesmo conjunto de total de itens corresponderá à consulta.

Sintaxe

any(operand, operand [,operand]*)

Parâmetros

Não aplicável.

Exemplos

A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "gato" ou "cachorro".

Se o índice contiver "gato" e "cachorro", mas "gato" for considerado uma correspondência melhor, a classificação dinâmico do item se baseará em "gato"m sem considerar "cachorro".

any(cat, dog)

COUNT

Especifica o número de ocorrências de termos de consulta que um item deve incluir para ser retornado como um resultado. O operando pode ser um termo de consulta simples, uma frase ou um termo de consulta curinga.

Sintaxe

property-spec:count(operand [,from=<numeric value>, to=<numeric value>])

Parâmetros

Parâmetro Valor Descrição
De <valor_numérico> O valor do parâmetro de deve ser um número inteiro positivo que especifica o número mínimo de vezes que o operando especificado deve ser correspondido. Se o parâmetro de não for especificado, nenhum limite inferior existirá.
to <valor_numérico> O valor do parâmetro para deve ser um número inteiro positivo que especifica o número máximo não inclusivo de vezes que o operando especificado deve ser correspondido. Por exemplo, um valor de a de 11 especifica 10 vezes ou menos. Se o parâmetro para não for especificado, não existirá nenhum limite superior.

Exemplos

Exemplo 1. A expressão a seguir corresponde a pelo menos cinco ocorrências da palavra "gato".

count(cat, from=5)

Exemplo 2. A expressão a seguir corresponde a pelo menos cinco, mas não 10 ou mais ocorrências da palavra "gato".

count(cat, from=5, to=10)

Exemplo 3. Cada uma das expressões a seguir corresponde a pelo menos três ocorrências de determinada palavra, e essa palavra pode ser "gato" ou "cachorro".

count(or(cat, dog), from=3)count(string("cat dog", mode="or"), from=3)

A tabela a seguir contém exemplos de valores de cadeia de caracteres de propriedade gerenciada e informa se correspondem às duas expressões do Exemplo 3.

Correspondeu? Texto
Sim Meu gato gosta de meu cachorro, mas meu cachorro detesta meu gato.
Não Meu pássaro gosta da minha salamandra, mas meu cachorro detesta meu gato.

DATETIME

Fornece digitação explícita de valores numéricos de data/hora. O operando é uma cadeia de caracteres de data/hora formatada de acordo com a sintaxe especificada em Expressões de token em FQL.

A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino.

Sintaxe

datetime(<date/time string>)

Parâmetros

Não aplicável.

DECIMAL

Fornece digitação explícita de valores decimais. O operando é um valor decimal de acordo com a sintaxe especificada em Expressões de token em FQL.

A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino.

Sintaxe

decimal(<decimal point value>)

Parâmetros

Não aplicável.

ENDS-WITH

Especifica que uma palavra ou frase deve aparecer no final de uma propriedade gerenciada (correspondência de limite).

Não há suporte para correspondência de limite em propriedades gerenciadas numéricas. Propriedades gerenciadas numéricas são sempre sujeitas à correspondência exata ou de intervalo de valores.

Alguns aplicativos podem exigir que você possa executar uma correspondência exata de uma propriedade gerenciada. Por exemplo, isso pode ser uma propriedade gerenciada product name em que o nome completo de um produto é uma subcadeia de caracteres de outro nome de produto.

Sintaxe

ends-with(<term or phrase>)

Parâmetros

Não aplicável.

Exemplos

A expressão a seguir corresponde a itens com os valores "Sr. Diogo Martins" e "Diogo Martins" na propriedade gerenciada "autor". Não fará a correspondência com itens com o valor "Diogo Martins sr".

author:ends-with("adam jones")

Comentários

A correspondência de limite pode ser aplicada ao texto da propriedade gerenciada ou a cadeias de caracteres individuais em uma propriedade gerenciada que contenha uma lista de valores de cadeia de caracteres; por exemplo, uma lista de nomes. Nesse caso, convém fazer a correspondência com o conteúdo exato de cada cadeia de caracteres e evitar a correspondência de consulta entre limites de cadeia de caracteres.

Para aplicar consultas de correspondência de limite, você deve configurar a propriedade gerenciada relevante no esquema de índice.

Habilitando o recurso de Correspondência de Limite para a propriedade gerenciada, você pode fazer o seguinte:

  • Usar consultas de correspondência limite explícitas.
  • Impedir a correspondência de frases entre os limites de cadeia de caracteres. Para propriedades gerenciadas que contêm várias cadeias de caracteres, esse recurso garante que uma cadeia de caracteres não corresponda a palavras antes ou depois de uma indicação de limite.

EQUALS

Especifica que uma palavra ou frase deve fornecer uma correspondência de token exata com a propriedade gerenciada.

Sintaxe

equals(<term or phrase>)

Parâmetros

Não aplicável.

Exemplos

O exemplo a seguir corresponderá a itens com os valores "Diogo Martins" na propriedade gerenciada "autor". Não fará a correspondência com itens com o valor "Diogo Martins sr" ou "Sr. Diogo Martins".

author:equals("adam jones")

Comentários

Confira também ENDS-WITH.

FILTER

Usado para consultar os metadados ou outros dados estruturados.

O uso do operador FILTER sugere automaticamente o seguinte para a consulta especificada:

  • A linguística será definida como linguistics="OFF".

  • A classificação será desabilitada.

  • Nenhum realce de consulta será usado no resumo realçado de ocorrências para a ocorrência de resultado da consulta.

Dica: se você usar o operador STRING em uma expressão FILTER, por padrão, a linguística será desabilitada. Você pode habilitar o processamento linguístico em cada expressão STRING dentro de FILTER usando o operando linguistics="ON".

Sintaxe

filter(<any valid FQL operator expression>)

Parâmetros

Não aplicável.

Exemplos

A expressão a seguir corresponde a itens que têm uma propriedade gerenciada Title que contém "sonata" e uma propriedade gerenciada Doctype que contém apenas o "áudio" de token. Nenhuma correspondência linguística será executada em relação a "áudio". Como o token FILTER será usado para fazer a correspondência com "áudio", esse texto não será realçado no resumo realçado de ocorrências.

and(title:sonata, filter(doctype:equals("audio")))

Comentários

Se você deve restringir sua consulta para corresponder a menos um grande conjunto de valores inteiros em uma propriedade numérica, pode expressar isso de duas maneiras funcionalmente equivalentes:

  • and(string("hello world"), filter(property-spec:or(1, 20, 453, ... , 3473)))
  • and(string("hello world"), filter(property-spec:int("1 20 453 ... 3473", mode="or")))

O segundo exemplo usa o operador INT usando uma cadeia de caracteres com o conjunto de valores numéricos entre aspas duplas. Isso oferece um desempenho de consulta significativamente melhor durante a filtragem com um grande conjunto de valores numéricos.

Se você deve filtrar um grande conjunto de valores, considere o uso de valores numéricos em vez de valores de cadeia de caracteres e expresse as consultas usando a sintaxe otimizada.

FLOAT

Fornece digitação explícita de valores numéricos de ponto flutuante. O operando é um valor de ponto flutuante de acordo com a sintaxe especificada em Expressões de token em FQL.

A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino.

Sintaxe

float(<floating point value>)

Parâmetros

Não aplicável.

INT

Fornece digitação explícita de valores inteiros. O operando é um valor inteiro de acordo com a sintaxe especificada em Expressões de token em FQL.

A conversão de tipo explícito é opcional e geralmente não é necessária. O tipo de termo de consulta é detectado de acordo com o tipo de propriedade gerenciada numérica de destino.

O operador INT também pode ser usado para expressar um conjunto de valores de número inteiro como argumentos para os operadores FQL Boolianos. Isso oferece um método com desempenho eficiente para fornecer um conjunto de valores inteiros em uma consulta, pois os valores que são passados usando o operador INT não são analisados pelo analisador de consulta FQL, mas são passados diretamente para o componente correspondente da consulta.

Sintaxe

int(<integer value>)

int("value, value, ??? , value")

A primeira sintaxe especifica um único inteiro. A segunda sintaxe especifica uma lista de valores inteiros separados por vírgulas entre aspas duplas.

Parâmetros

Não aplicável.

Exemplos

Se você precisa restringir a consulta para corresponder pelo menos a um grande conjunto de valores inteiros em uma propriedade numérica, pode expressar isso usando o operador INT:

and(string("hello world"), filter(id:int("1 20 49 124 453 985 3473", mode="or")))

NEAR

Restringe o conjunto de resultados a itens que têm N termos a uma certa distância entre si.

A ordem dos termos de consulta não é importante para a correspondência, apenas a distância.

Qualquer número de termos pode ser combinado com os operadores NEAR.

Os operandos NEAR podem ser termos simples, frases ou expressões de operador Booliano OR ou ANY. Caracteres curinga são aceitos.

Se várias operandos do operador NEAR corresponderem ao mesmo token indexado, serão considerados próximos uns dos outros.

Sintaxe

near(arg, arg [, arg]* [, N=<numeric value>])

Parâmetros

Parâmetro Valor Descrição
N <valor_numérico> Especifica o número máximo de palavras que pode ser exibidas entre os termos (proximidade explícita). Se NEAR incluir mais de dois operandos, o número máximo de palavras permitidas entre os termos (N) será contada na expressão inteira. Padrão: 4

Exemplos

Exemplo 1. A expressão a seguir corresponde a cadeias de caracteres que contêm "gato" e "cachorro" se não mais de quatro tokens indexados (padrão) os separam.

near(cat, dog)

Exemplo 2. A expressão a seguir corresponde a cadeias de caracteres que contêm "gato", "cachorro", "raposa" e "lobo" se não mais de quatro tokens indexados os separam.

near(cat, dog, fox, wolf)

A tabela a seguir contém exemplos de valores de cadeia de caracteres de propriedade gerenciada e informa se eles correspondem à expressão do Exemplo 2.

Correspondeu? Texto
Sim A imagem mostra um gato, um cachorro, uma raposa e um lobo.
Sim (com lematização) Cachorros, raposas e lobos são caninos, mas gatos são felinos.
Não A imagem mostra um gato com um cachorro, uma raposa e um lobo.

A expressão a seguir corresponde a todas as cadeias de caracteres da tabela anterior.

near(cat, dog, fox, wolf, N=5)

Comentários

Considerações sobre a distância entre termos de NEAR/ONEAR

N indica o número máximo de palavras que podem ser exibidas entre os termos de consulta no segmento correspondente do item. Se NEAR ou ONEAR inclui mais de dois operandos, o número máximo de palavras permitidas entre os termos de consulta (N) é contado no segmento do item correspondente a todos os termos NEAR ou ONEAR.

NEAR ou ONEAR funciona em texto indexado. Isto significa que carateres especiais, como vírgula (" , "), ponto (" . "), dois pontos (" : "), ou ponto e vírgula (" ; ") será tratado como espaço em branco. O termo "distância" se relaciona a tokens dentro do texto indexado.

Se você usar ONEAR ou NEAR com operandos iguais, o operador funcionará da seguinte maneira:

near(a, a, n=x)

Essa consulta sempre retornará true se pelo menos uma instância de "a" aparecer no contexto. Isso também significa que NEAR não pode ser usado como um operador COUNT. Para saber mais sobre como contar as ocorrências de termos, confira o operador COUNT.

NEAR aplicado a frases também corresponderá a frases sobrepostas no texto.

Se um token no segmento correspondente corresponder a mais de um operando para a expressão NEAR ou ONEAR, a consulta poderá corresponder mesmo se o número de tokens não correspondentes no segmento correspondente exceder o valor de 'N' na expressão de operador NEAR ou ONEAR. Por exemplo, uma sobreposição pode consistir em frases sobrepostas. Se o número de correspondências de sobreposição de token for 'O', a consulta corresponderá se não mais de 'N+O' tokens não correspondentes aparecerem no segmento correspondente do item.

NEAR ou ONEAR com NOT

O operador NOT não pode ser usado dentro do operador NEAR ou ONEAR. A seguir, um exemplo de sintaxe FQL incorreta:

near(audi,not(bmw),n=2)

NÃO

Retorna somente os itens que não correspondem ao operando. O operando pode ser qualquer expressão FQL válida.

Sintaxe

not(operand)

Parâmetros

Não aplicável.

ONEAR

A variante ordenada de NEAR e requer uma correspondência ordenada dos termos. O operador ONEAR pode ser usado para restringir o conjunto de resultados a itens que têm N a uma certa distância entre si.

Sintaxe

onear(arg, arg [, arg]* [, N=<numeric value>])

Parâmetros

Parâmetro Valor Descrição
N <valor_numérico> Especifica o número máximo de palavras que podem ser exibidas entre os termos (proximidade explícita). Se ONEAR incluir mais de dois operandos, o número máximo de palavras permitidas entre os termos (N) será contada na expressão inteira. Padrão: 4

Exemplos

Exemplo 1. A expressão a seguir corresponde a todas as ocorrências das palavras "gato", "cachorro", "raposa" e "lobo" que aparecem em ordem, se não mais de quatro tokens indexados as separam.

onear(cat, dog, fox, wolf)

A tabela a seguir contém exemplos de valores de cadeia de caracteres de propriedade gerenciada e informa se eles correspondem à expressão anterior.

Correspondeu? Texto
Sim A imagem mostra um gato, um cachorro, uma raposa e um lobo.
Não Cachorros, raposas e lobos são caninos, mas gatos são felinos.
Não A imagem mostra um gato com um cachorro, uma raposa e um lobo.

Exemplo 2. A expressão a seguir corresponde (com lematização) ao texto na segunda linha da tabela anterior.

onear(dog, fox, wolf, cat, N=5)

Exemplo 3. A expressão a seguir corresponde ao texto na primeira e na terceira linha da tabela anterior.

onear(cat, dog, fox, wolf, N=5)

Comentários

Confira também NEAR.

OU

Retorna somente os itens que correspondem a pelo menos um dos operandos OR. Itens correspondentes terão uma classificação dinâmica maior (pontuação de relevância no conjunto de resultados) se mais operandos OR forem correspondentes. Os operandos podem ser um termo único ou qualquer subexpressão FQL válida.

Sintaxe

or(operand, operand [,operand]*)

Parâmetros

Não aplicável.

Exemplos

A expressão a seguir corresponde a todos os itens para os quais o índice de texto completo padrão contém "gato" ou "cachorro". Se um índice de texto completo padrão de um item contiver "gato" e "cachorro", ele será correspondente e terá uma classificação dinâmica mais alta do que teria se contivesse apenas um dos tokens.

or(cat, dog)

PHRASE

Pesquisa uma cadeia de tokens exata.

Os operandos PHRASE podem ser termos únicos. Caracteres curinga são aceitos.

Sintaxe

phrase(term [, term]*)

Parâmetros

Não aplicável.

Comentários

Confira também STRING.

RANGE

Use o operador RANGE para propriedades gerenciadas de data/hora e numéricas. O operador habilita expressões correspondentes a intervalos.

Sintaxe

range(start, stop [,from="GE"|"GT"] [,to="LE"|"LT"])

Parâmetros

Parâmetro Valor Valor Descrição
início _<numeric_value>\ <date/time_value>_ Valor de início do intervalo. Para especificar que o intervalo não tem um limite inferior, use a palavra reservada min.
stop _<numeric_value>\ <date/time_value>_ Valor final do intervalo. Para especificar que o intervalo não tem um limite superior, use a palavra reservada max.
from **GE\ GT** Parâmetro opcional que indica o intervalo de início de abertura ou fechamento. Valores válidos:
  • GE Maior ou igual ao valor inicial (>= início do intervalo).
  • GT Maior do que o valor inicial (> início do intervalo).
Padrão: GE
to **LE\ LT** Parâmetro opcional que indica o intervalo de término de abertura ou fechamento. Valores válidos:
  • LE Menor ou igual ao valor final (<= fim do intervalo).
  • LT Menor que o valor final (< fim do intervalo).
Padrão: LT

Exemplos

A expressão a seguir corresponde a uma propriedade description começando com a frase "grandes realizações" que aparece em itens com tamanho de pelo menos 10.000 bytes.

and(size:range(10000, max), description:starts-with("big accomplishments"))

STARTS-WITH

Especifica uma palavra ou frase que deve aparecer no início de uma propriedade gerenciada.

Sintaxe

starts-with(<term or phrase>)

Parâmetros

Não aplicável.

Exemplos

A expressão a seguir corresponde a itens com os valores "Diogo Martins sr" e "Diogo Martins" na propriedade gerenciada autor. Não fará a correspondência com itens com o valor "Sr Diogo Martins".

author:starts-with("adam jones")

Comentários

Para ver comentários adicionais sobre correspondência de limite, confira ENDS WITH.

STRING

Define uma condição de correspondência Booliana para uma cadeia de caracteres de texto.

O operando é uma cadeia de caracteres de texto (um ou mais termos) que devem ser correspondidos. A cadeia de caracteres é seguida de nenhum ou mais parâmetros.

O operador STRING também pode ser usado como uma conversão de tipo. A consulta string("24.5"), por exemplo, tratará o valor numérico "24,5" como uma cadeia de caracteres de texto.

Sintaxe

string("<text string>"

[, mode=<mode>]

[, n=<near>]

[, weight=<n>]

[, linguistics=<on|off>]

[, wildcard=<on|off>])

Parâmetros

Parâmetro Valor Descrição
modo <mode> O parâmetro mode especifica como avaliar o valor <text string>. A lista a seguir mostra os valores válidos. "PHRASE" - phrase(term [,term]*)
Mode Expressão de operador equivalente
"PHRASE" phrase(term [,term]*)
"AND" and(term, term [,term]*)
"OR" or(term, term [,term]*)
"ANY" any(term, term [,term]*)
"NEAR" near(term, term [,term]*, N)
"ONEAR" onear(term, term [,term]*, N)
Padrão: "PHRASE"
n <valor_numérico> Este parâmetro indica a distância máxima do termo para modo= "NEAR" ou modo= "ONEAR". As seguintes expressões são equivalentes: string("hello world", mode="NEAR", n=5)near(hello, world, n=5) Predefinição: 4
weight <valor_numérico> Esse parâmetro é um valor numérico positivo que indica o peso de termos para a classificação dinâmica. Um valor mais baixo indica que um termo deve contribuir menos para a classificação. Um valor maior indica que um termo deve contribuir mais para a classificação. Um valor zero para o parâmetro de peso especifica que um termo não deve afetar a classificação dinâmica. O parâmetro weight se aplica a todos os termos na expressão STRING. Dica: o parâmetro de peso afeta somente as consultas de índice de texto completo. Padrão: 100.
linguística ativado|desativado Desabilita/habilita todos os recursos linguísticos para a cadeia de caracteres (lematização, sinônimos, verificação ortográfica) se essas opções estão habilitadas para a consulta. Você poderá usar esse parâmetro para desativar o processamento linguístico de determinado termo ou cadeia de caracteres, enquanto ainda quiser que o termo ou a cadeia de caracteres contribua para a classificação. Padrão: "ON"
curinga ativado|desativado Esse parâmetro controla a expansão de curinga termos na <cadeia de caracteres de texto>. Essa configuração substitui as configurações de curinga em parâmetros de consulta e permite que caracteres curinga estendidos sejam habilitados ou desabilitados em partes específicas da consulta. A seguir, os valores válidos:
  • "ATIVADO" Especifica que o caráter "*" é avaliado como caráter universal. Um caráter "*" corresponde a zero ou mais carateres.
  • "DESATIVADO" Especifica que os carateres "*" não são avaliados como carateres universais.
Padrão: "ON"

Observação

No Microsoft Office SharePoint Online, os parâmetros minexpansion, maxexpansion e annotation_class para o operador STRING são obsoletos.

Exemplos

Exemplo 1. Como o modo de cadeia de caracteres padrão é "PHRASE", cada uma das expressões a seguir retorna os mesmos resultados.

"what light through yonder window breaks"string("what light through yonder window breaks")string("what light through yonder window breaks", mode="phrase")phrase(what, light, through, yonder, window, breaks)

Exemplo 2. A expressão de token de cadeia de caracteres a seguir e a expressão de operador AND retornam os mesmos resultados.

string("cat dog fox", mode="and")and(cat, dog, fox)

Exemplo 3. A expressão de token de cadeia de caracteres a seguir e a expressão de operador OR retornam os mesmos resultados.

string("coyote saguaro", mode="or")or(coyote, saguaro)

Exemplo 4. A expressão de token de cadeia de caracteres a seguir e a expressão de operador ANY retornam os mesmos resultados.

string("coyote saguaro", mode="any")any(coyote, saguaro)

Exemplo 5. A expressão de token de cadeia de caracteres e a expressão de operador NEAR a seguir retornam os mesmos resultados.

string("coyote saguaro", mode="near")near(coyote, saguaro)

Exemplo 6. A expressão de token de cadeia de caracteres e a expressão de operador NEAR a seguir retornam os mesmos resultados.

string("cat dog fox wolf", mode="near", N=4)near(cat, dog, fox, wolf, N=4)

Exemplo 7. A expressão de token de cadeia de caracteres a seguir e a expressão de operador ONEAR retornam os mesmos resultados.

string("cat dog fox wolf", mode="onear")onear(cat, dog, fox, wolf)

Exemplo 8. A expressão de token de cadeia de caracteres a seguir corresponde à palavra "nobre" com os recursos linguísticos desabilitados, para que outras formas da palavra (como "enobrecedor") não sejam correspondentes usando a lematização.

string("nobler", linguistics="off")

Exemplo 9. A expressão a seguir corresponde a itens que contêm "gato" ou "cachorro", mas a expressão aumenta a ordem dos itens que contêm "cachorrinho" mais de itens que contêm "gato" dinâmica.

or(string("cat", weight="200"), string("dog", weight="500"))

Comentários

Peso de relevância para classificação dinâmica

O efeito principal do parâmetro weight é para consultas OR. Também pode ter alguns efeito sobre consultas AND. O algoritmo de classificação dinâmica pode sugerir que termos diferentes dão uma contribuição de classificação diferente, dependendo de onde no item o termo correspondente ocorre.

A diferença na contribuição de classificação também pode ser baseada na frequência do termo e na frequência inversa do item. Este é um exemplo:

  • Consulta: and(string("a"), string("b", weight=200))
  • Esquema de índice: a propriedade gerenciada title tem mais peso do que a propriedade gerenciada body.
  • O item de índice 1 inclui o termo 'a' no título e o termo 'b' no corpo.
  • O item de índice 2 inclui o termo 'a' no corpo e o termo 'b' no título.

Nesse exemplo, o item 2 obterá a maior classificação total, pois os itens com contribuição de classificação dinâmica mais elevada receberão um aumento ainda mais.

Dica: o aumento de termo relativo (positivo ou negativo) é aplicado ao componente de classificação dinâmica da classificação total. No entanto, os cálculos de classificação de aumento de proximidade (a distância entre as palavras) não serão afetados pelo peso do termo. O peso relativo nem sempre implica que a classificação total para o item é modificada acordo com a porcentagem fornecida. > A consulta seguinte irá procurar os termos "pedro", "paulo" ou "maria", em que "pedro" terá o dobro da contribuição de classificação que os outros dois termos. > or(peter, string("paul mary", mode="OR", weight=50))

Lidar com cadeias de caracteres especiais

Os caracteres especiais, como vírgulas (","), ponto e vírgula (";"), dois-pontos (":"), ponto ("."), sinal de subtração ("-"), sublinhado ("_") ou barra ("/"), são tratados como espaços em branco dentro de uma expressão de cadeia de caracteres entre aspas duplas. Isso está relacionado ao processo de geração de tokens. Esses caracteres também sugerem uma frase implícita dos tokens separados por esses caracteres.

As expressões de consulta a seguir são equivalentes.

title:string("animals birds", mode="phrase")title:"animals/birds"title:string("animals/birds", mode="and")title:string("animals/birds", mode="or")

As expressões de consulta a seguir são equivalentes.

title:or(string("animals birds", mode="phrase"), string("animals insects", mode="phrase"))title:string("animals/birds animals/insects", mode="or")

As expressões de consulta a seguir são equivalentes.

body:string("help contoso com", mode="phrase")body:string("help@contoso.com")

Correspondência de frase indexada

Você pode pesquisar uma cadeia de caracteres exata de tokens usando o operador STRING com mode="phrase" ou o operador PHRASE.

Todas as operações com frase sugerem uma correspondência de frase com token. Isto significa que carateres especiais, como vírgula (" , "), ponto e vírgula (" ; "), dois pontos (" : "), caráter de sublinhado (" _ "), menos (" - "), ou barra (" / ") são tratados como espaço em branco. Isso está relacionado ao processo de geração de tokens.

XRANK

Aumenta a classificação dinâmica de itens com base em certas ocorrências de termo na expressão de correspondência, sem alterar quais itens correspondem à consulta. Uma expressão XRANK consiste em um componente que deve ser correspondido, a expressão de correspondência, e um ou mais componentes que contribuem apenas para a classificação dinâmica, a expressão de classificação. Pelo menos um dos parâmetros, excluindo n, deve ser especificado para que uma expressão XRANK seja válida.

Expressões de correspondência podem ser qualquer expressão FQL válida, incluindo expressões aninhadas XRANK. Expressões de classificação podem ser qualquer expressão FQL válida sem expressões XRANK. Se as consultas FQL têm vários operadores XRANK, o valor de classificação dinâmico final é calculado como uma soma de aumentos em todos os operadores XRANK.

Observação

No Microsoft Office SharePoint Online Server 2010, o operador XRANK tinha dois parâmetros: boost e boostall, bem como a seguinte sintaxe: xrank(operand, rank-operand [, rank-operand]* [,boost=n] [,boostall=yes]). Essa seguinte sintaxe, juntamente com seus parâmetros, foi preterida no SharePoint. Recomendamos o uso da nova sintaxe e dos novos parâmetros em vez disso.

Sintaxe

xrank(<match expression> [, <rank-expression>]*, rank-parameter[, rank-parameter]*)

Fórmula

Fórmula para operador XRANK

Parâmetros

Parâmetro Valor Descrição
N <valor_inteiro> Especifica o número de resultados para calcular as estatísticas. Este parâmetro não afeta o número de resultados para os que a classificação dinâmica contribui; é apenas um meio para excluir os itens sem importância dos cálculos das estatísticas. Padrão: 0. Um valor zero carrega a semântica de todos os documentos.
Nb <valor_float> O parâmetro nb refere-se ao aumento normalizado. Este parâmetro especifica o fator que será multiplicado com o produto de pontuação média e de variação dos valores de classificação do conjunto de resultados. f na fórmula XRANK.

O aumento tipicamente normalizado, nb, é o único parâmetro que é modificado. Esse parâmetro fornece o controle necessário para promover ou rebaixar um item específico, sem levar em consideração o desvio padrão.

Parâmetros avançados

Os parâmetros avançados a seguir também estão disponíveis. No entanto, geralmente não são usados.

Parâmetro Valor Descrição
cb <valor_float> O parâmetro cb se refere ao aumento constante. Padrão: 0. a na fórmula XRANK.
stdb <valor_float> O parâmetro stdb se refere ao aumento do desvio padrão. Padrão: 0. e na fórmula XRANK.
avgb <valor_float> O parâmetro avgb se refere ao aumento médio. Esse fator é multiplicado com o valor médio de classificação do conjunto de resultados. Padrão: 0. d na fórmula XRANK.
rb <valor_float> O rb parâmetro se refere ao aumento do intervalo. Este fator é multiplicado com o intervalo de valores de classificação no conjunto de resultados. Padrão: 0. b na fórmula XRANK.
pb <valor_float> O parâmetro pb se refere a porcentagem de aumento. Esse fator é multiplicado com a classificação do item comparado com o valor mínimo no corpo. Padrão: 0. c na fórmula XRANK.

Exemplos

Exemplo 1. A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "gato" ou "cachorro". A expressão aumenta a ordem dinâmica desses itens com um aumento constante de 100 para itens que também contêm "de raça".

xrank(or(cat, dog), thoroughbred, cb=100)

Exemplo 2. A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "gato" ou "cachorro". A expressão aumenta a ordem dinâmica desses itens com um aumento normalizado de 1,5 para itens que também contêm "de raça".

xrank(or(cat, dog), thoroughbred, nb=1.5)

Exemplo 3. A expressão a seguir corresponde a itens para os quais o índice de texto completo padrão contém "gato" ou "cachorro". A expressão aumenta a ordem dinâmica desses itens com um aumento constante de 100 e com um aumento normalizado de ,1,5, para itens que também contêm "de raça".

xrank(or(cat, dog), thoroughbred, cb=100, nb=1.5)

Exemplo 4. A expressão a seguir corresponde a todos os itens que contêm o termo "animais" e aumenta a ordem dinâmica da seguinte maneira:

  • A classificação dinâmica de itens que contêm o termo "cachorros" é aumentada em 100 pontos.

  • A classificação dinâmica de itens que contêm o termo "gatos" é aumentada em 200 pontos.

  • A classificação dinâmica de itens que contenham os termos "cachorros" e "gatos" é aumentada em 300 pontos.

xrank(xrank(animals, dogs, cb=100), cats, cb=200)

Confira também