Для поиска по документации используется поисковый движок Solr с диалектом DisMax.
DisMax — это упрощенный язык запросов для
поиска по простым фразам.
Пример: поиск документации
Найдёт документы, содержащие слова "поиск" и "документации".
Поиск настроен так, что он разделяет текст на токены (слова) на основании пробелов и знаков
препинания.
Преобразует
текст в нижний регистр, чтобы сделать поиск нечувствительным к регистру. Выполняет стемминг для
русского языка, то есть приводит слова к базовой форме. Например, слова "поиск", "поиска",
"поиски" будут приведены к одной корневой форме.
Создаёт n-граммы, то есть части слов с минимальной длиной 3 и максимальной 10 символов, что
помогает находить частичные совпадения, когда вводится только часть слова. Например, слово
"документация" будет разбито на «док», «доку», «докум», что позволяет находить его по начальным
буквам.
Пример: "поиск документации"
Ищет точное совпадение с фразой "поиск документации", где слова должны стоять в указанном порядке и без промежуточных слов. Подходит для ситуаций, когда требуется найти только полностью совпадающие выражения.
Пример: поиск~0.8
Позволяет находить слова, которые схожи по написанию с запросом, с возможностью небольшой ошибки. Параметр тильда ~0.8 задаёт уровень допустимого расстояния Левенштейна, который допускает, например, одну замену буквы в запросе, что полезно при небольших опечатках. Изменение значения тильды с 0.7 на более высокое, например 0.8, приведёт к более "размытым" результатам и позволит найти больше вариантов, но с меньшей точностью. Если вам нужно, чтобы запрос находил максимально точные совпадения, лучше оставить значение ~0.7 или ниже.
Пример: поиск AND документация
С помощью AND можно требовать, чтобы оба слова присутствовали в результатах.
Пример: поиск OR документация
С OR можно указывать, что достаточно наличия одного из слов, например: поиск OR документация.
Пример: поиск NOT документация
Использование NOT (например, поиск NOT документация) исключит результаты, где встречается слово "документация".
Пример: (поиск документации) OR (руководство)
Группировка позволяет комбинировать запросы, чтобы получить документы, которые содержат либо "поиск документации", либо "руководство". Можно комбинировать группы с разными операторами для более сложных запросов.