Довідник по синтаксису мови запитів fast (fql)

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

Текстове вираження з маркером може бути одним словом або фразою, укладеної в подвійні лапки.

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

Вирази з підстановочних знаками

Вираз з підстановочних знаками позначає один термін або фразу, яка включає знак зірочки ( "*"); зірочка позначає збіг з будь-якою кількістю символів, крім пробілу. FQL підтримує префіксний пошук окремих текстових керованих властивостей і повнотекстових індексів.

Приклади виразів з підстановочних знаками

Нижче наведено список допустимих способів використання виразів з підстановочних знаками в FQL:

Вирази з числовими термінами

Кожен вираз з числовим терміном повинно включати специфікацію властивості сумісного типу схеми індексу. У таблиці 2 перераховані числові типи даних, які можна використовувати в FQL.

Таблиця 2. Числові типи даних, які можна використовувати в FQL

Оператори мови FAST-запитів (FQL) - це ключові слова, які визначають логічні операції або інші обмеження операндів. Синтаксис операторів FQL виглядає наступним чином:

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

В даному синтаксисі:

property-spec - це необов'язкова специфікація властивості, за яким слід оператор in.

operator - це ключове слово, що позначає операцію, яку необхідно виконати.

operand - це вираз з терміном або інший оператор.

parameter - це ім'я значення, яке змінює поведінку оператора.

value - це значення для імені параметра.

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

У таблиці 3 перераховані типи операторів, які підтримуються FQL.

Таблиця 3. Типи операторів, які підтримуються FQL

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

Компонент динамічного рейтингу для цієї частини запиту заснований на найбільш підходящому терміні в вираженні ANY.

Відмінність від оператора OR пов'язано тільки з рейтингом в результуючому наборі. У запиту буде однакова кількість збігів.

any (operand, operand [, operand] *)

Наступне вираз відповідає елементам, для яких повнотекстовий індекс за замовчуванням містить слово "cat" чи "dog".

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

Вказує кількість термінів запиту, яке має включати елемент, щоб він був повернутий у якості результату. Операндом може бути один термін запиту, фраза або термін запиту з підстановочних знаками.

property-spec: count (operand [, from =, to =])

Вказує необхідність наявності слова або фрази в кінці керованого властивості (зіставлення кордонів).

Для числових керованих властивостей зіставлення кордонів не підтримується. Для них підтримується тільки точна відповідність і відповідність діапазону значень.

Для деяких програм необхідно використовувати точну відповідність керованого властивості. Наприклад, це може бути кероване властивість product name. де повне ім'я продукту є підрядком імені іншого продукту.

ends-with ()

Наступне вираз відповідає елементам зі значеннями "Mr Adam Jones" і "Adam Jones" в керованому властивості "author". Воно не буде відповідати елементам зі значенням "Adam Jones sr".

Примітки

Щоб застосувати запити зіставлення кордонів, необхідно налаштувати відповідне кероване властивість в схемі індексу.

Включивши для керованого властивості функцію зіставлення кордонів, можна виконувати наступні дії:

використовувати запити явного зіставлення кордонів;

заборонити пошук відповідності фраз за межами рядка. Для керованих властивостей, що містять кілька рядків, ця функція блокує пошук відповідності слів до або після покажчика кордону.

Вказує необхідність точного відповідності слова або фрази з керованим властивістю.

Наступне вираз відповідає елементи, які мають кероване властивість Title. що містить "sonata", і кероване властивість Doctype. містить тільки маркер "audio". Лінгвістична обробка для "audio" виконуватися не буде. Так як маркер FILTER буде використовуватися для зіставлення "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 і рядок з набором числових значень в подвійних лапках. Це забезпечує набагато кращу продуктивність при фільтрації з великим набором числових значень.

Дозволяє явно задавати тип числових значень з плаваючою комою. Операнд - значення з плаваючою комою відповідно до синтаксисом, зазначеним в розділі Вирази з маркерами в FQL.

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

float ()

Наступне вираз відповідає всім рядкам з попередньої таблиці.

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

Примітки

Рекомендації по відстані між термінами NEAR / ONEAR

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

NEAR або ONEAR працюють в тексті з розміткою. Це означає, що спеціальні символи, наприклад кома ( ","), десяткова крапка ( "."), Двокрапка ( ":") або крапку з комою ( ";"), будуть розглядатися як пробіл. Термін "відстань" відноситься до маркерів в індексованих тексті.

Якщо ви використовуєте ONEAR або NEAR з рівними операндами, оператор буде працювати наступним чином:

Цей запит завжди буде повертати значення true. якщо в контексті з'явиться хоча б один екземпляр '' a ''. Крім того, це означає, що NEAR не може використовуватися в якості оператора COUNT. Додаткові відомості про підрахунок кількості термінів див. Розділ з описом оператора COUNT.

NEAR. застосований до фраз, також буде відповідати перекриваються фразам в тексті.

Якщо маркер в співпадаючому сегменті відповідає більш, ніж одного операнд виразу NEAR або ONEAR. запит може бути задоволений, навіть якщо число невідповідних маркерів у відповідному сегменті перевищує значення "N" в вираженні оператора NEAR або ONEAR. Наприклад, накладенням можуть бути перекриваються фрази. Якщо число відповідностей перекриттів маркерів - "O", запит буде задоволено, якщо у відповідному сегменті елемента знаходиться не більше, ніж "N + O" невідповідних маркерів.

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

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

Цей параметр є позитивним числом, що вказує вага терміна для динамічного рейтингу.

При ранжируванні термін з більш низьким значенням ваги має меншу цінність, термін з більш високим значенням - більш високу. Якщо вага терміна дорівнює нулю, то цей термін не впливає на динамічний рейтинг.

Параметр weight застосовується до всіх термінів в вираженні STRING.

Вага параметра буде впливати тільки на запити повнотекстового індексу.

Включення або відключення всіх включених в запит функцій лінгвістики для рядка (лематизації, синоніми, перевірка орфографії).

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

Значення за замовчуванням: "ON"

Цей параметр керує виразами з підстановочних знаками для термінів всередині <текстовой строки>. Цей параметр перевизначає будь-які налаштування символів узагальнення в параметри запиту та дозволяє включати або відключати розширені символи узагальнення в певних частинах запиту.

"ON". Вказує, що символ "*" інтерпретується як знак підстановки. Символ "*" відповідає нулю або більше символів.

"OFF". Вказує, що символ "*" не тлумачиться як такий знак підстановки.

Значення за замовчуванням: "ON"

Приклад 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") не пов'язана із з використанням виділення коренів.

Приклад 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 ( "[email protected]")

Відповідність фразі, розділеної на маркери

Ви можете виконувати пошук точної рядки маркерів з використанням оператора STRING з режимом mode = "phrase" або оператором PHRASE.

Всі подібні операції над фразами на увазі відповідність фразі, розділеної на маркери. Це означає, що спеціальні символи, такі як кома ( ","), крапка з комою ( ";"), двокрапка ( ":"), підкреслення ( "_"), мінус ( "-") або пряма коса риска ( "/"), вважаються пропуском. Це відноситься до процесу виділення маркерів.

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

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

xrank ( [, ] *, Rank-parameter [, rank-parameter] *)

Схожі статті

Copyright © 2024