Синтаксис запиту
Ця сторінка дає короткий огляд доступного синтаксису запиту, від базового до просунутого. Синтаксис запиту забезпечується 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}
. Це буде обмежувати пошук у діапазоні пошуком у полях.