Назад на головну сторінку

# Синтаксис запиту

Ця сторінка дає короткий огляд доступного синтаксису запиту, від базового до просунутого. Синтаксис запиту забезпечується Apache Lucene, основоположним рушієм пошуку DocFetcher'а, і описується у більш технічній манері на сторінці Lucene про синтаксис запиту.

## Булеві операції

DocFetcher підтримує булеві оператори `OR`, `AND` and `NOT`. Якщо слова поєднуються без булевих операторів, DocFetcher буде стандартно обробляти їх, ніби вони були поєднані з допомогою `OR`. Якщо вам не подобається це, ви можете перейти в уподобання та задати `AND` як стандарт.

Замість `OR`, `AND` та `NOT`, ви можете також використовувати `||`, `&&` та `'-'` (символ мінуса), відповідно. Ви можете використовувати круглі дужки для групування певних виразів. Ось кілька прикладів:

Запит | Результатні документи містять...
--- | ---
`dog OR cat` | або `dog`, або `cat`, або те й інше
`dog AND cat` | обидва слова `dog` і `cat`
`dog cat` | (стандартно еквівалент запиту `dog OR cat`)
`dog NOT cat` | `dog`, але не `cat`
`-dog cat` | `cat`, але не `dog`
`(dog OR cat) AND mouse` | `mouse` та, або `dog`, або `cat`, чи обидва

## Шукання є не чутливим до регістру символів.

DocFetcher не розрізняє символи між рядковими та заголовними, а тому не має значення, чи ви уводите слова повністю у нижньому або у верхньому регістрі, чи у поєднанні рядкових і заголовних. Єдиними винятками є ключові слова `OR`, `AND`, `NOT` та `TO`, які повинні завжди уводитися заголовними літерами. (Для ключслова `TO` дивіться про 'пошук діапазону' нижче.)

## Пошук фрази та його обов'язкові умови

Для пошуку фрази (тобто, послідовності слів) поміщайте фразу у подвійні лапки. Для вказування, що документи для пошуку повинні обов'язково містити конкретне слово, ставте `'+'` перед цим словом. Звичайно, ви можете комбінувати ці конструкції з булевими операторами та дужками. Знову ж таки, ось приклади:

Запит | Результатні документи містять...
--- | ---
`"dog cat mouse"` | слова `dog`, `cat` та `mouse`, саме у такому порядку
`+dog cat` | безумовно `dog`, та можливо також `cat`
`"dog cat" AND mouse` | фраза `dog cat`, та слово `mouse`
`+dog +cat` | (еквівалент запиту `dog AND cat`)

## Знаки підстанови

Знаки питання (`'?'`) та зірочки (`'*'`) можуть використовуватися для вказування того, що деякі символи є невідомими. Знак питання означає точно один невідомий символ, тоді як зірочка означає нуль або більше невідомих символів. Приклади:

Запит | Результатні документи містять...
--- | ---
`luc?` | `lucy`, `luca`, ...
`luc*` | `luc`, `lucy`, `luck`, `lucene`, ...
`*ene*` | `lucene`, `energy`, `generator`, ...

Примітка: Якщо знаки підстанови використовуються як перший символ слова, то пошук тяжіє у середньому до уповільнення. Це через те, як індекс структурується: це ніби ви намагаєтеся шукати когось телефонний номер, і ви знаєте тільки власне ім'я особи. Тому, у прикладі вище, пошук `*ene*` буде, мабуть, повільнішим, ніж інші пошуки, оскільки `*ene*` починається знаком підстанови.

## Нечіткі пошуки

Нечіткі пошуки дозволяють вам шукати слова подібні до заданого слова. Наприклад, якщо ви шукаєте `roam~`, то DocFetcher буде знаходити документи, що містять слова, на кшталт `foam` та `roams`.

Додатково, ви можете прилучати поріг подібності між 0 та 1, наприклад: `roam~0.8`. Чим вище цей поріг, тим вище подібність повернутих відповідностей. Відсутність зазначення цього порогу є еквівалентом використання стандартного значення 0.5.

## Пошуки за близькістю

Пошуки за близькістю дозволяють вам знаходити слова, що є у межах визначеної відстані одне відносно іншого. Для здійснення пошуку за близькістю вставте тильду (`'~'`) у кінці фрази, за якою слідує значення цієї відстані. — Зауважте, що це синтаксично подібне до нечітких пошуків. Наприклад, для пошуку документів, що містять `wikipedia` та `lucene` у межах відстані 10 слів між ними, уведіть: `"wikipedia lucene"~10`

## Умови підвищення пріоритету

Ви можете впливати на сортування значущості результатів, призначаючи власні вагомості для слів. Наприклад: якщо ви уведете `dog^4 cat` замість просто `dog cat`, документи, що містять `dog` будуть отримувати вищу оцінку, а тому будуть переміщені ближче до верху переліку результатів.

Хоча цей фактор підвищення повинен бути додатнім, однак він може бути меншим за 1 (наприклад, 0.2). Якщо жоден фактор підвищення не визначено, то використовується стандартне значення 1.

## Пошуки у певних полях

Стандартно, DocFetcher буде шукати у всіх текстових даних, доступних для витягнення, тобто у вмісті, іменах файлів та метаданих документів. Проте, ви можете також обмежувати свої пошуки полями імен файлів та/або певних метаданих. Наприклад, для пошуку документів, чиї назви містять `wikipedia`, уведіть: `title:wikipedia`. Це може комбінуватися з пошуком фрази, наприклад `title:"dog cat"`, або дужками, наприклад `title:(dog cat)`. Фактично, якщо ви опустите ці лапки та дужки, то лише `dog` буде добиратися, а не `cat`.

Які поля є доступними, у цілому залежить від формату документа, але ви можете використовувати це як емпіричне правило:

- Files: filename, title, author
- Emails: subject, sender, recipients

## Пошуки у діапазоні

DocFetcher дозволяє шукати слова, що є лексикографічно між двома іншими словами. Наприклад, слово `beta` знаходиться між `alpha` та `gamma`. А тому, якщо ви хочете вивести у перелік документи, що містять слова між `alpha` та `gamma`, уведіть: `[alpha TO gamma]`.

Коли використовуються квадратні дужки, то запитуваний діапазон стає включним, тобто `alpha` та `gamma` включаються у результати. Щоб зробити діапазон пошуку виключним, використовуйте натомість фігурні дужки: `{alpha TO gamma}`

Ви можете комбінувати пошуки у діапазоні з пошуками у полях так `title:{alpha TO gamma}`. Це буде обмежувати пошук у діапазоні пошуком у полях.