Справочник по синтаксису языка запросов FAST (FQL)

Узнайте, как создавать сложные поисковые запросы для службы поиска в SharePoint с помощью языка запросов FAST (FQL). В этом справочнике описываются элементы запроса FQL и использование спецификаций свойств, выражений с маркерами и операторов в запросах FQL.

Общие сведения об FQL, частях выражений и выражениях языка запросов в SharePoint

Язык FAST-запросов (FQL) это мощный язык запросов, который позволяет разработчикам выполнять точный поиск и сужать область поиска до значений, которые относятся к конкретному управляемого свойству или полнотекстовому индексу.

Выражение языка запросов может содержать вложенные части выражения, которые включают термины запроса, спецификации свойств и операторы, описанные в таблице 1.

Таблица 1. Части выражений в выражениях языка запросов

Элемент Описание
Выражения с маркерами Один или несколько поисковых терминов, фраз или числовых значений в запросе.
Спецификация свойства Свойство или полнотекстовый индекс, соответствующий затрагиваемому выражению.
Операторы Ключевые слова, определяющие логические операции (например, AND, OR) или другие ограничения для операндов (например, FILTER).

Пример FQL-запроса

Следующий пример запроса FQL служит для поиска терминов "hello" и "world" в управляемом свойстве body индексированного элемента:

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

В этом примере происходит указанный ниже процесс.

  • body: ограничивает область запроса текстом управляемого свойства в данном элементе.
  • "hello world" операнд для оператора STRING, указывающий поисковые термины.
  • mode="and" указывает, что логический оператор запроса AND будет применен к "hello world".

Длина FQL-запросов ограничена 2048 символами.

Спецификация свойств в FQL

Спецификация свойств ограничивает область затрагиваемых выражений определенными областями индексированного содержимого. Эта область может быть определена полнотекстовым индексом или управляемым свойством.

Управляемые свойства типа Text или YesNo считаются текстом. Все остальные типы управляемых свойств, в том числе тип Datetime, считаются числовыми значениями.

Если не включить спецификацию свойства для выражения, поисковая система будет использовать полнотекстовый индекс по умолчанию, определенный в схеме индекса.

После имени свойства всегда должно стоять двоеточие (оператор In), а числовые операторы всегда должны включать спецификацию свойства.

Спецификация свойства (оператор In) может быть применена к следующим сущностям запроса:

  • Одиночному термину или фразе, как показано ниже:

    author:shakespeare
    
    title:"to be or not to be"
    
  • Оператору, например STRING, как показано ниже.

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

    В этом случае спецификация свойства применяется ко всему выражению оператора.

Примеры

Выражения с маркерами в FQL

title:and(much, nothing)

and(title:much, title:nothing)

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

Выражения с маркерами на языке FQL

Текстовое выражение с маркером может быть одним словом или фразой, заключенной в двойные кавычки.

Числовое выражение с маркером может быть одним значением или диапазоном значений.

Выражения с подстановочными знаками

Выражения с подстановочными знаками

Выражение с подстановочными знаками указывает на один термин или фразу, включающую символ звездочки ("*"). Звездочка подразумевает совпадение из нуля или нескольких символов, за исключением пробелов. Язык FQL поддерживает поиск по префиксу для отдельных текстовых управляемых свойств и полнотекстовых индексов.

Примеры выражений с подстановочными знаками

Выражения с числовыми терминами

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

Выражения с числовыми терминами

Каждое выражение с числовым термином должно включать спецификацию свойства совместимого типа схемы индекса. В таблице 2 перечислены числовые типы данных, которые можно использовать в FQL.

Табл. 2. Числовые типы данных, которые можно использовать в FQL

Тип FQL Совместимые типы схем индекса Описание
Integer 64-разрядное целое число. 64-битное целое число.
Double 64-разрядное число с плавающей запятой двойной точности. 64-битное число с плавающей запятой (двойная точность).
128-разрядное десятичное число. 128-разрядное десятичное число. 128-битное десятичное число
Значение даты и времени. Значение даты и времени. За счет поддержки даты и времени в FQL над их значениями можно выполнять те же числовые операции, что и над другими числовыми значениями. Выражения запросов даты и времени

Выражения запросов даты и времени

В запросах поддерживаются следующие совместимые со стандартом ISO 8601 форматы datetime:

YYYY-MM-DD

  • YYYY-MM-DDThh:mm:ss
  • YYYY-MM-DDThh:mm:ss
  • ГГГГ-ММ-ДДTчч:мм:ссZ
  • ГГГГ-ММ-ДДTчч:мм:ссfrZ

В этих форматах datetime:

  • ГГГГ задает год из четырех цифр.

    Примечание.

    Поддерживается только формат года из четырех цифр.

  • Параметр MM задает месяц в формате двух цифр. Например, 01 — это январь.

  • Параметр DD задает двузначное значение дня месяца (от 01 до 31).

  • Параметр T обозначает букву "T".

  • Параметр hh обозначает часы в формате двух цифр (от 00 до 23). Обозначения a.m. и p.m. не допускаются.

  • Параметр mm обозначает минуты в формате двух цифр (от 00 до 59).

  • Параметр сс обозначает секунды в формате двух цифр (от 00 до 59).

  • fr задает необязательную долю секунд, ss; от 1 до 7 цифр, которые следуют за . после секунд. Например, 2012-09-27T11:57:34.1234567.

Все значения даты и времени необходимо указывать в часовом поясе UTC (другое название — GMT). Идентификатор часового пояса UTC (символ "Z" в конце) указывать необязательно.

Зарезервированные слова, специальные символы и преобразование

Чтобы представить любое из этих слов в виде терминов в выражении запроса, их необходимо заключить в двойные кавычки, как показано в следующих примерах:

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.

Чтобы представить любое из этих слов в виде терминов в выражении запроса, их необходимо заключить в двойные кавычки, как показано в следующих примерах:

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

Совет

Регистр зарезервированных слов и символов не учитывается, но для будущей совместимости рекомендуем использовать символы в нижнем регистре.

В FQL не всегда обязательно заключать строку в двойные кавычки. Пример: and(cat, dog) является допустимым FQL-выражением, хотя cat и dog не заключены в двойные кавычки. Тем не менее, мы рекомендуем использовать их, чтобы избежать конфликтов с зарезервированными словами.

The query terms are tokenized according to your locale setting. В процессе разметки удаляются некоторые специальные символы. Так как специальные символы удалены, следующие FQL-выражения эквивалентны:

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

and("king", "queen")

Когда запрос включает термины, введенные пользователем или полученные из другого приложения, используйте оператор string("<query terms>", mode="AND|OR|PHRASE"), чтобы избежать конфликта с зарезервированными словами в языке запроса. Кроме того, из запроса пользователя необходимо удалять двойные кавычки.

Операторы FQL

Операторы языка FAST-запросов (FQL) — это ключевые слова, которые определяют логические операции или другие ограничения операндов. Синтаксис операторов FQL выглядит следующим образом:

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

В этом синтаксисе:

  • operator это ключевое слово, обозначающее операцию, которую необходимо выполнить.
  • operand это выражение с термином или другой оператор.
  • parameter это имя значения, которое изменяет поведение оператора.
  • value это значение для имени параметра.
  • Регистр имен операторов, имен и текстовых значений параметров не учитывается. Пробелы в теле оператора допускаются, но игнорируются, если они не заключены в двойные кавычки. Длина FQL-запросов ограничена 2048 символами.

Регистр имен операторов, имен и текстовых значений параметров не учитывается. Пробелы в теле оператора допускаются, но игнорируются, если они не заключены в двойные кавычки. Длина FQL-запросов ограничена 2048 символами.

В таблице 3 перечислены типы операторов, поддерживаемые в языке FQL.

Табл. 3. Типы операторов, поддерживаемые FQL

Тип Описание Операторы
String Enables you to specify query operations on a string of terms. Этот оператор чаще всего используется с текстовыми терминами. Логический
Логический Позволяет объединять термины и части выражений в запросе. AND, OR, ANY, ANDNOT, NOT, COUNT, COUNT
Компонент ранжирования с учетом расположения Позволяет указывать удаленность от терминов запроса в соответствующей текстовой последовательности. NEAR, ONEAR, PHRASE, STARTS-WITH, ENDS-WITH, EQUALS
Числовой Позволяет указывать числовые условия в запросе. RANGE, INT, FLOAT, DATETIME, DECIMAL
Важность Позволяет повлиять на оценку релевантности запроса. XRANK и FILTER

В таблице 4 представлен список поддерживаемых операторов.

Табл. 4. Операторы, поддерживаемые FQL

Описание Описание Тип
Возвращает только элементы, которые соответствуют всем операндам AND. Логический Логический
Возвращает только элементы, которые соответствуют первому операнду и не соответствуют последующим операндам. Логический Логический
ANY Аналогичен оператору OR, но на динамический ранг (степень релевантности в результирующем наборе) не влияет ни количество совпадающих операндов, ни расстояние между терминами в элементе. Логический
Позволяет указывать, сколько терминов запроса должен включать элемент, чтобы он был возвращен в качестве результата. Операндом может быть один термин запроса, фраза или термин запроса с подстановочными знаками. Позволяет указывать, сколько терминов запроса должен включать элемент, чтобы он был возвращен в качестве результата. Операндом может быть один термин запроса, фраза или термин запроса с подстановочными знаками. Boolean
Позволяет явно задавать тип числовых значений. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Числовой
Позволяет явно задавать тип числовых значений. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Числовой
Указывает необходимость наличия слова или фразы в конце управляемого свойства. Расстояние Расстояние
Указывает, что слово или фраза должна точно соответствовать управляемому свойству. Расстояние Расстояние
Используется для запроса метаданных или других структурированных данных. Релевантность Релевантность
Позволяет явно задавать тип числовых значений. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Числовой
Позволяет явно задавать тип числовых значений. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства. Числовой
NEAR Ограничивает результирующий набор элементами, содержащими N терминов на определенном расстоянии друг от друга. Расстояние
Возвращает только термины, которые не включают операнд. Логический Логический
ONEAR Упорядоченный вариант NEAR, требует упорядоченного совпадения элементов. Оператор ONEAR можно использовать для ограничения результирующих наборов элементами, которые имеют N термины в пределах определенного расстояния. Возвращает только элементы, которые не соответствуют операнду. Операнд может быть любым допустимым выражением FQL. Расстояние
OR Возвращает только те элементы, которые совпадают по крайней мере с одним из операндов выражения OR. Совпадающим элементам назначается более высокий динамический ранг (степень релевантности в результирующем наборе), если обнаружено больше совпадающих операндов выражения OR. Логический
Возвращает только элементы, которые соответствуют определенной строке маркеров. Расстояние Расстояние
Позволяет использовать выражения соответствия диапазонам. Оператор RANGE используется для числовых управляемых свойств и управляемых свойств даты и времени. Позволяет использовать выражения соответствия диапазонам. Оператор RANGE используется для числовых управляемых свойств и управляемых свойств даты и времени. Numeric
Указывает необходимость расположения слова или фразы в начале управляемого свойства. Расстояние Расстояние
Задает логическое условие соответствия для текстовой строки. Строка Строка
Позволяет повысить динамический рейтинг элементов на основе наличия определенных терминов. Выражение XRANK содержит один компонент, который должен совпадать, и один или несколько компонентов, которые только увеличивают динамический рейтинг. Позволяет повысить динамический рейтинг элементов на основе наличия определенных терминов. Выражение XRANK содержит один компонент, который должен совпадать, и один или несколько компонентов, которые только увеличивают динамический рейтинг. Важность

Примечание.

В SharePoint оператор RANK является нерекомендуемым и больше не оказывает никакого влияния. Используйте вместо него оператор XRANK.

AND

Логический Операндами могут быть отдельные термины или допустимый части FQL-выражений.

Синтаксис

and(operand, operand [, operand]*)

Параметры

Неприменимо.

Примеры

ANDNOT

and(cat, dog, fox)

ANDNOT

Логический Операндами могут быть отдельные термины или допустимый части FQL-выражений.

Синтаксис

andnot(operand, operand [,operand]*)

Параметры

Неприменимо.

Примеры

Пример 1. Следующее выражение соответствует элементам, для которых полнотекстовый индекс по умолчанию содержит слово "cat", но не "dog".

andnot(cat, dog)

Пример 2. Приведенное ниже выражение сопоставляет элементы, для которых в полнотекстовый индекс по умолчанию входит слово "собака", но не входят слова "гончая" и "чихуахуа".

andnot(dog, beagle, chihuahua)

ANY

Примечание.

В SharePoint оператор ANY является нерекомендуемым. Используйте вместо него оператор OR.

Аналогичен оператору OR за исключением того, что на динамический рейтинг (показатель релевантности в результирующем наборе) не влияет ни число соответствующих операндов, ни расстояние между терминами в элементе. Операндами могут быть отдельные термины или допустимые части FQL-выражений.

Динамический компонент ранжирования для этой части запроса основан на самом подходящем термине из выражения ANY.

Примечание.

Отличие от оператора OR заключается только в ранжировании в рамках результирующего набора. Запросу будет соответствовать тот же общий набор элементов.

Синтаксис

any(operand, operand [,operand]*)

Параметры

Неприменимо.

Примеры

Если индекс содержит и "cat", и "dog", но слово "cat" считается лучшим соответствием, динамический рейтинг элемента будет основан на слове "cat" без учета "dog".

COUNT

any(cat, dog)

COUNT

Указывает количество терминов запроса, которое должен включать элемент, чтобы он был возвращен в качестве результата. Операндом может быть один термин запроса, фраза или термин запроса с подстановочными знаками.

Синтаксис

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

Параметры

Параметр Значение Описание
From <числовое_значение> Значение параметра from должно быть положительным целым числом, задающим минимальное количество совпадений указанного операнда. Если параметр from не задан, нижняя граница отсутствует.
to <числовое_значение> Значение параметра to должно быть положительным целым числом, задающим максимальное количество совпадений указанного операнда (не включая верхнюю границу). Например, значение 11 параметра to обозначает не более 10 совпадений. Если параметр to не задан, верхняя граница отсутствует.

Примеры

Пример 1. Следующее выражение соответствует элементам, содержащим по крайней мере 5 слов "cat".

count(cat, from=5)

Пример 2. Следующее выражение соответствует элементам, содержащим по крайней мере 5, но менее 10 слов "cat".

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

Пример 3. Каждое из следующих выражений соответствует элементам, содержащим по крайней мере 3 определенных слова, и этим словом может быть "cat" или "dog".

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

В приведенной ниже таблице представлены примеры строковых значений управляемых свойств и указано, соответствуют ли они двум выражениям из примера 3.

Соответствие? Текст
Да Нет
Нет DATETIME

DATETIME

Позволяет явно задавать тип числовых значений даты и времени. Операнд — строка даты и времени, формат которой соответствует синтаксису, указанному в Выражения с маркерами на языке FQL.

Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства.

Синтаксис

datetime(<date/time string>)

Параметры

Неприменимо.

DECIMAL

Позволяет явно задавать тип десятичных значений. Операнд — десятичное значение в соответствии с синтаксисом, указанным в Выражения с маркерами на языке FQL.

Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства.

Синтаксис

decimal(<decimal point value>)

Параметры

Неприменимо.

ENDS-WITH

Для числовых управляемых свойств сопоставление границ не поддерживается. Для них поддерживается только точное соответствие и соответствие диапазона значений.

Boundary matching is not supported on numeric managed properties. Numeric managed properties will always be subject to exact or value range matching.

Для некоторых приложений необходимо использовать точное соответствие управляемого свойства. Например, это может быть управляемое свойство product name, где полное имя продукта является подстрокой имени другого продукта.

Синтаксис

ends-with(<term or phrase>)

Параметры

Неприменимо.

Примеры

Следующее выражение соответствует элементам со значениями "Mr Adam Jones" и "Adam Jones" в управляемом свойстве "author". Элементы со значением "Сэр Адам Джонс" сопоставлены не будут.

author:ends-with("adam jones")

Заметки

Сопоставление границ можно применять ко всему тексту управляемого свойства или отдельным строкам в управляемом свойстве, содержащем список строковых значений, например список имен. В этом случае рекомендуем использовать точное соответствие для каждой строки и избегать сопоставления запроса через границы строк.

Чтобы применить запросы сопоставления границ, необходимо настроить соответствующее управляемое свойство в схеме индекса.

использовать запросы явного сопоставления границ;

  • запретить поиск соответствия фраз за границами строки. Для управляемых свойств, содержащих несколько строк, эта функция блокирует поиск соответствия слов до или после указателя границы.
  • запретить поиск соответствия фраз за границами строки. Для управляемых свойств, содержащих несколько строк, эта функция блокирует поиск соответствия слов до или после указателя границы.

EQUALS

Синтаксис

Синтаксис

equals(<term or phrase>)

Параметры

Неприменимо.

Примеры

В следующем примере соответствуют элементы со значением "Adam Jones" в управляемом свойстве "author". Элементы со значением "Сэр Адам Джонс" и "Г-н Адам Джонс" сопоставлены не будут.

author:equals("adam jones")

Заметки

См. также ENDS-WITH.

ФИЛЬТР

Используется для запросов метаданных или других структурированных данных.

Использование оператора FILTER автоматически обеспечивает реализацию для запроса следующего:

  • лингвистика будет отключена (linguistics="OFF");

  • рейтинг будет отключен;

  • в сводке с выделенными совпадениями для результата запроса не будет использоваться выделение запросов.

Совет. Если оператор STRING используется в выражении FILTER, по умолчанию лингвистическая обработка отключается. Вы можете включить лингвистическую обработку в каждом выражении STRING внутри оператора FILTER с помощью операнда linguistics="ON".

Синтаксис

filter(<any valid FQL operator expression>)

Параметры

Неприменимо.

Примеры

Следующее выражение соответствует элементы, которые имеют управляемое свойство Title, содержащее "sonata", и управляемое свойство Doctype, содержащее только маркер "audio". Лингвистическая обработка для "audio" выполняться не будет. Поскольку для сопоставления маркера "аудио" используется оператор FILTER, этот текст не будет выделен в сводке по результатам запроса.

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

Заметки

Если необходимо ограничить запрос, чтобы он соответствовал по крайней мере одному из большого набора целых значений в числовом свойстве, вы можете сделать это двумя функционально эквивалентными способами:

  • 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")))

Во втором примере используется оператор INT и строка с набором числовых значений в двойных кавычках. Это обеспечивает гораздо лучшую производительность при фильтрации с большим набором числовых значений.

FLOAT

FLOAT

Позволяет явно задавать тип числовых значений с плавающей запятой. Операнд — числовое значение с плавающей запятой в соответствии с синтаксисом, указанным в Выражения с маркерами на языке FQL.

Явное преобразование типа необязательно и обычно не требуется. Тип термина запроса определяется в соответствии с типом целевого числового управляемого свойства.

Синтаксис

float(<floating point value>)

Параметры

Неприменимо.

INT

Позволяет явно задавать тип целых значений. Операнд — это целое значение в соответствии с синтаксисом, указанным в Выражения с маркерами на языке FQL.

Явное преобразование типа необязательно и обычно не требуется. The type of the query term is detected according to the type of the target numeric managed property.

Оператор INT также может использоваться для выражения набора целых значений в виде аргументов для логических операторов FQL. Это эффективный способ указания в запросе набора целых значений, так как значения, которые передаются с использованием оператора INT, не анализируются средством синтаксического анализа FQL, а передаются непосредственно компоненту поиска соответствия запросов.

Синтаксис

int(<integer value>)

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

Первый синтаксис обозначает одно целое число. Второй синтаксис обозначает заключенный в двойные кавычки список целых значений с разделителями-запятыми.

Параметры

Неприменимо.

Примеры

NEAR

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

NEAR

Ограничивает результирующий набор элементами, содержащими N терминов на определенном расстоянии друг от друга.

При сопоставлении не учитывается порядок терминов запроса, только расстояние.

С операторами NEAR можно совмещать любое количество терминов.

NEAR operands may be single terms, phrases, or Boolean OR or ANY operator expressions. Wildcards are accepted.

Если несколько операндов в операторе NEAR совпадают с одним и тем же индексированным маркером, то они считаются смежными.

Синтаксис

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

Параметры

Параметр Значение Описание
N <числовое_значение> Задает максимальное количество слов, которые могут отображаться между терминами (явное расстояние). Если оператор NEAR включает более двух операндов, то максимальное количество слов между терминами (N) рассчитывается в пределах целого выражения. Примеры

Примеры

Пример 1. Следующее выражение соответствует строкам, которые содержат слова "cat" и dog", если их разделяет не более четырех индексированных маркеров (по умолчанию).

near(cat, dog)

Пример 2. Приведенное ниже выражение сопоставляет строки, содержащие слова "кошка", "собака", "лиса" и "волк", если между этими словами встречается не более четырех индексированных маркеров.

near(cat, dog, fox, wolf)

В таблице ниже приведены примеры строковых значений управляемых свойств. Для каждого значения указано, соответствует ли оно предыдущему выражению из примера 2.

Соответствие? Текст
Да Да (с выделением корней)
Dogs, foxes, and wolves are canines, but cats are felines. Нет
Нет Следующее выражение соответствует всем строкам из предыдущей таблицы.

Примечания

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

Заметки

Рекомендации касательно расстояния между терминами NEAR и ONEAR

Параметр N указывает максимальное число слов, которые могут находиться между терминами запроса в совпадающем сегменте элемента. Если NEAR или ONEAR содержит более двух операндов, максимальное количество слов, допустимое между терминами запроса ( N), учитывается в сегменте элемента, соответствующих всем терминам NEAR или ONEAR .

Операторы NEAR и ONEAR работают с текстом, преобразованным в маркеры. Это означает, что специальные символы, такие как запятая (" , "), точка (" . "), двоеточие (" : "), или точка с запятой (" ; ") будет рассматриваться как пробел. Термин "расстояние" относится к маркерам в индексированном тексте.

Если оператор ONEAR или NEAR используется с равными операндами, он будет работать следующим образом:

near(a, a, n=x)

Этот запрос всегда будет возвращать значение true, если в контексте встречается по крайней мере один экземпляр символа "a". Это также означает, что оператор NEAR невозможно использовать в качестве оператора COUNT. Дополнительные сведения о подсчете вхождений терминов см. в описании оператора COUNT.

Оператор NEAR, применяемый к фразам, также сопоставляет перекрывающиеся фразы в тексте.

Если маркер в соответствующем сегменте совпадает с несколькими операндами выражения NEAR или ONEAR, то запрос будет сопоставлен, даже если количество несовпадающих маркеров в соответствующем сегменте превышает значение N в выражении с оператором NEAR или ONEAR. Допустим, в тексте имеются перекрывающиеся фразы. Если количество совпадений перекрывающихся маркеров составляет O, то запрос сопоставляется, если в соответствующем сегменте элемента имеется не более N+O несовпадающих маркеров.

NEAR или ONEAR с оператором NOT

Оператор NOT нельзя использовать в операторах NEAR или ONEAR. Ниже приведен пример неправильного FQL-синтаксиса:

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

NOT

Возвращает только элементы, которые не соответствуют операнду. Операндом может быть любое допустимое FQL-выражение.

Синтаксис

not(operand)

Параметры

Неприменимо.

ONEAR

Упорядоченный вариант NEAR, требует упорядоченного совпадения элементов. Оператор ONEAR можно использовать для ограничения результирующего набора элементами, в которых N терминов расположены на определенном расстоянии друг от друга.

Синтаксис

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

Параметры

Параметр Значение Описание
N <числовое_значение> Задает максимальное количество слов между терминами (явное расстояние). Если выражение ONEAR содержит более двух операндов, то максимальное число слов между терминами (N) рассчитывается в пределах целого выражения. Примеры

Примеры

Пример 1. Приведенное ниже выражение сопоставляет все вхождения слов "кошка", "собака", "лиса" и "волк" в указанном порядке, если между этими словами встречается не более четырех индексированных маркеров.

onear(cat, dog, fox, wolf)

В таблице ниже приведены примеры строковых значений управляемых свойств. Для каждого значения указано, соответствует ли оно предыдущему выражению.

Соответствие? Текст
Да Нет
Нет Нет
Нет Следующее выражение соответствует всем строкам из предыдущей таблицы.

Пример 2. Следующее выражение соответствует (с выделением корней) тексту из второй строки предыдущей таблицы.

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

Пример 3. Приведенное ниже выражение сопоставляет текст из первой и третьей строк приведенной выше таблицы.

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

Заметки

См. также NEAR.

OR

Возвращает только те элементы, которые совпадают по крайней мере с одним из операндов выражения OR. Чем больше операндов OR совпадет, тем выше будет динамический рейтинг элемента (показатель релевантности в результирующем наборе). Операндами могут быть отдельные термины или допустимый части FQL-выражений.

Синтаксис

or(operand, operand [,operand]*)

Параметры

Неприменимо.

Примеры

Следующее выражение соответствует всем элементам, для которых полнотекстовый индекс по умолчанию содержит операнд "cat" или "dog". Если в полнотекстовый индекс элемента по умолчанию входят оба слова, выражение сработает и присвоит более высокий динамический ранг, чем при наличии только одно из этих маркеров.

or(cat, dog)

PHRASE

Ищет точную строку маркеров.

Операндами PHRASE могут быть отдельные термины. Допускаются подстановочные знаки.

Синтаксис

phrase(term [, term]*)

Параметры

Неприменимо.

Заметки

См. также STRING.

RANGE

Оператор RANGE используется для числовых управляемых свойств и управляемых свойств даты и времени. Этот оператор разрешает выражения соответствия диапазону.

Синтаксис

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

Параметры

Параметр Значение Значение Описание
начало _<numeric_value>\ <date/time_value>_ Начальное значение диапазона. stop
stop _<numeric_value>\ <date/time_value>_ Конечное значение диапазона. from
from **GE\ Необязательный параметр, который указывает, включать или не включать начало интервала. Необязательный параметр, указывающий интервал с открытым или закрытым началом. Допустимые значения:
  • GE Больше или равно начального значения (>= начало интервала).
  • GT Больше начального значения (> начало интервала).
to
to **LE\ Необязательный параметр, который указывает, включать или не включать конец интервала. Необязательный параметр, указывающий интервал с открытым или закрытым концом. Допустимые значения:
  • LE Меньше или равно конечному значению (<= конец интервала).
  • LT Меньше конечного значения (< конец интервала).
Примеры

Примеры

Приведенное ниже выражение соответствует свойству описания, начинающегося с фразы "big accomplishments", которая встречается в элементах с размером по крайней мере 10 000 байтов.

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

STARTS-WITH

Синтаксис

Синтаксис

starts-with(<term or phrase>)

Параметры

Неприменимо.

Примеры

Следующее выражение будет соответствовать элементам со значениями "Adam Jones sr" и "Adam Jones" в управляемом свойстве author. Элементы со значением "Г-н Адам Джонс" сопоставлены не будут.

author:starts-with("adam jones")

Заметки

Дополнительные замечания о сопоставлении границ можно узнать в разделе ENDS-WITH.

STRING

Операнд сопоставляемая текстовая строка (один или более терминов). Строка может сопровождаться любым количеством параметров.

The operand is a text string (one or more terms) that is to be matched. The string is followed by zero or more parameters.

Оператор STRING также можно использовать в качестве преобразования типов. Например, запрос string("24.5")будет обрабатывать числовое значение "24,5" как текстовую строку.

Синтаксис

string("<text string>"

[, mode=<mode>]

[, n=<near>]

[, weight=<n>]

[, linguistics=<on|off>]

[, wildcard=<on|off>])

Параметры

Параметр Значение Описание
<режим> <режим> Параметр mode указывает, как оценивать значение <строки текста>. Ниже представлен список допустимых значений. "PHRASE" - phrase(term [,term]*)
ModeЭквивалентное выражение с оператором
"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)
Значение по умолчанию: "PHRASE"
n <числовое_значение> Этот параметр задает максимальное расстояние между терминами для выражения= "NEAR" или выражения= "ONEAR". Следующие выражения эквивалентны: string("hello world", mode="NEAR", n=5)near(hello, world, n=5) По умолчанию: 4
weight <числовое_значение> Этот параметр содержит положительное числовое значение, указывающее вес для динамического ранжирования. Меньшее значение соответствует меньшему влиянию термина на ранг. Большее значение соответствует большему влиянию термина на ранг. Нулевое значение весового параметра означает, что термин не влияет на динамический ранг. Параметр weight применяется ко всем терминам в выражении STRING. СОВЕТ. Параметр weight влияет только на запросы полнотекстового индекса. Значение по умолчанию: 100.
linguistics on|off Отключает или включает все лингвистические функции для строк (лемматизацию, синонимы, проверку правописания), если они включены для запроса. Вы можете использовать данный параметр, чтобы отключить лингвистическую обработку для данного термина или строки, но чтобы при этом термин или строка все равно приняли участие в рейтинге. Значение по умолчанию: "ON"
wildcard on|off Этот параметр управляет расширением терминов в <текстовой строке> с помощью подстановочных знаков. Этот параметр переопределяет все настройки подстановочных знаков в параметрах запроса и позволяет включать или отключать расширенные подстановочные знаки в определенных частях запроса. Допустимые значения:
  • "ON" Указывает, что символ "*" оценивается как подстановочный знак. Символ "*" соответствует нулю или нескольким символам.
  • "OFF" Указывает, что символы "*" не оцениваются как подстановочные знаки.
Значение по умолчанию: "ON"

Примечание.

В SharePoint параметры minexpansion, maxexpansion и annotation_class для оператора STRING устарели.

Примеры

Пример 1. Так как режимом строки по умолчанию является " PHRASE ", все представленные ниже выражения возвращают одинаковые результаты.

"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)

Пример 2. Следующее строковое выражение маркера и операторное выражение AND возвращают одинаковые результаты.

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

Пример 3. Следующее строковое выражение маркера и операторное выражение OR возвращают одинаковые результаты.

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

Пример 4. Следующее строковое выражение маркера и операторное выражение ANY возвращают одинаковые результаты.

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

Пример 5. Следующее строковое выражение маркера и операторное выражение NEAR возвращают одинаковые результаты.

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

Пример 6. Следующее строковое выражение маркера и операторное выражение NEAR возвращают одинаковые результаты.

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

Пример 7. Следующее строковое выражение маркера и операторное выражение ONEAR возвращают одинаковые результаты.

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

Пример 8. Следующее строковое выражение маркера соответствует слову "nobler" с отключенной функцией лингвистики, поэтому другие формы данного слова (например, "ennobling") не сопоставляются с использованием выделения корней.

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

Пример 9. Следующее выражение соответствует элементам, которые содержат слово "cat" или "dog ", однако динамический рейтинг для элементов с вхождениями слова "dog" увеличивается больше, чем для элементов с вхождениями слова "cat".

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

Заметки

Релевантный вес для динамического ранжирования

Параметр weight предназначен в основном для запросов OR. Кроме того, он может несколько повлиять на запросы AND. Алгоритм динамического рейтинга подразумевает, что различные термины по-разному вовлекаются в процесс ранжирования в зависимости от того, в каком месте термина появилось совпадение.

Различия в степени вовлечения в рейтинг основываются на частоте терминов и обратной частоте элементов. Ниже приведен пример.

  • Запрос: and(string("a"), string("b", weight=200)).
  • Схема индекса: вес управляемого свойства title выше, чем вес управляемого свойства body.
  • Элемент индекса 1 содержит термин "a" в свойстве "title" и термин "b" в свойстве "body".
  • Элемент индекса 2 содержит термин "a" в свойстве "body" и термин "b" в свойстве "title".

В данном примере элемент 2 получит более высокое значение общего рейтинга, так как элементы с более высоким вовлечением в динамический рейтинг получают еще большее повышение ранга.

Совет. Бонус для относительных терминов (положительный или отрицательный) применяется к динамическому компоненту ранжирования для общего ранга. Однако вес терминов не влияет на бонус за расстояние между словами. Относительный вес не всегда подразумевает, что общий ранг элемента меняется в соответствии с указанным процентом. > Следующий запрос выполняет поиск терминов "peter", "paul" или "mary", где "peter" будет иметь в два раза больше ранга, чем два других термина. > or(peter, string("paul mary", mode="OR", weight=50))

Обработка строк со специальными знаками

Специальные символы, такие как запятая (","), точка с запятой (";"), двоеточие (":"), десятичная точка ("."), минус ("-"), подчеркивание ("_") или косая черта ("/"), считаются пустым местом внутри строкового выражения, заключенного в двойные кавычки. Это относится к процессу выделения маркеров. Они также подразумевают неявное фразирование маркеров, разделенных этими символами.

Следующие выражения запросов эквивалентны:

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

Следующие выражения запросов эквивалентны:

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

Следующие выражения запросов эквивалентны:

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

Соответствие фразе, разделенной на маркеры

Вы можете искать точную строку маркеров, используя оператор STRING с параметром mode="phrase" или оператор PHRASE.

Все подобные операции с фразами подразумевают сопоставление фраз в виде маркеров. Это значит, что специальные символы, такие как запятая (" , "), точка с запятой (" ; "), двоеточие (" : "), подчеркивание (" _ "), минус (" - ") или прямая косая черта (" / "), считаются пробелом. Это связано с процессом преобразования в маркеры.

XRANK

Повышение динамического ранга элементов основано на вхождениях определенных терминов в пределах match expression без изменения элементов, соответствующих запросу. Выражение XRANK состоит из одного компонента, который должен удовлетворять выражению (match expression), и одного или нескольких компонентов, участвующих только в динамическом рейтинге (rank expression). Чтобы выражение XRANK было допустимым, для него должен быть указан хотя бы один из параметров, за исключением n.

Match expressions может быть любым допустимым FQL-выражением, включая вложенные выражения XRANK. Rank expressions может быть любым допустимым FQL-выражением без выражения XRANK. Если ваши FQL-запросы имеют несколько операторов XRANK, итоговое выражение динамического рейтинга рассчитывается как сумма повышений по всем операторам XRANK.

Примечание.

В SharePoint Server 2010 у оператора XRANK есть два параметра: boost и boostall. Для него используется следующий синтаксис: xrank(operand, rank-operand [, rank-operand]* [,boost=n] [,boostall=yes]). Этот синтаксис и соответствующие параметры являются нерекомендуемыми в SharePoint. Рекомендуем использовать новый синтаксис и его параметры.

Синтаксис

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

Формула

Формула для оператора XRANK

Параметры

Параметр Значение Описание
N <целое_число> Задает количество результатов, для которых вычисляются статистические данные. Этот параметр не влияет на количество результатов, на которые влияет динамический рейтинг. С его помощью из вычисления статистики просто исключаются ненужные элементы. Значение по умолчанию: 0. Нулевое значение означает все документы .
Nb <значение_с_плавающей_запятой> Параметр nb ссылается на нормированную величину. Этот параметр определяет коэффициент, на который умножается произведение дисперсии и среднего арифметического значений рейтингов в наборе результатов. Параметр f в формуле XRANK.

Обычно нормированная величина (nb) — это единственный изменяемый параметр. Этого параметра достаточно, чтобы понижать или повышать рейтинг отдельного элемента, не учитывая стандартное отклонение.

Расширенные параметры

Доступны также дополнительные параметры, указанные ниже. Но обычно они не используются.

Параметр Значение Описание
cb <значение_с_плавающей_запятой> Параметр cb ссылается на постоянную величину. Значение по умолчанию: 0. Параметр a в формуле XRANK.
stdb <значение_с_плавающей_запятой> Параметр stdb ссылается на величину стандартного отклонения. Значение по умолчанию: 0. Параметр e в формуле XRANK.
avgb <значение_с_плавающей_запятой> Параметр avgb ссылается на среднее значение. Этот коэффициент умножается на среднее значение рейтингов в наборе результатов. Значение по умолчанию: 0. Параметр d в формуле XRANK.
rb <значение_с_плавающей_запятой> Параметр rb ссылается на диапазон значений. Этот коэффициент умножается на диапазон значений рейтингов в наборе результатов. Значение по умолчанию: 0. Параметр b в формуле XRANK.
pb <значение_с_плавающей_запятой> Параметр pb ссылается на значение в процентах. Этот коэффициент умножается на собственный рейтинг элемента в сравнении с минимальным значением в наборе. Значение по умолчанию: 0. Параметр c в формуле XRANK.

Примеры

Пример 1. Следующее выражение сопоставляет элементы, для которых полнотекстовый индекс по умолчанию содержит "cat" или "dog". Выражение увеличивает на постоянную величину 100 динамический рейтинг элементов, содержащих также термин "thoroughbred".

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

Пример 2. Следующее выражение сопоставляет элементы, для которых полнотекстовый индекс по умолчанию содержит термины "cat" или "dog". Выражение увеличивает динамический рейтинг элементов на нормированную величину 1,5 для элементов, содержащих также термин "thoroughbred".

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

Пример 3. Следующее выражение сопоставляет элементы, для которых полнотекстовый индекс по умолчанию содержит термины "cat" или "dog". Выражение увеличивает динамический рейтинг элементов на постоянную величину 100 и нормированную величину 1,5 для элементов, содержащих также термин "thoroughbred".

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

Пример 4. Следующее выражение сопоставляет все элементы, содержащие термин "animals", и увеличивает динамический рейтинг следующим образом:

  • динамический рейтинг элементов, содержащих термин "dogs", увеличивается на 100 баллов;

  • динамический ранг элементов, содержащих термин "cats", увеличивается на 200 баллов;

  • динамический рейтинг элементов, содержащих и термин "dogs", и термин "cats", увеличивается на 300 баллов.

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

См. также