Опции поиска

Режимы поиска

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

Поиск с учетом опечаток

Если эта опция включена, то при поиске со словами запроса будут отождествляться не только слова документов, соответствующие словам запроса с точностью до словоизменения, но и "похожие" слова. Алгоритм поиска похожих слов эквивалентен алгоритму, который применяется в большинстве программ проверки правописания русских текстов при поиске "похожих" слов - кандидатов для замены ошибочно написанных слов. Этот алгоритм учитывает наиболее распространенные опечатки. Подходящими признаются слова, в которых по отношению к слову запроса:

Приведем реальный пример, когда в базе данных фамилия "Шеварднадзе" встречалась в следующих написаниях: Шеварднадзе, Шеварнадзе, Шевардназде, Шеравднадзе. Все эти опечатки благополучно распознаются предлагаемым алгоритмом.

Алгоритм поиска с учетом опечаток (поиск по сходству)

Поиск по сходству осуществляется так:

  1. Назовем "словарным" слово, которое удается распознать по словарю морфоанализа и нормализовать. Пусть слово запроса "словарное". С помощью словаря морфоанализа слово опознается и генерируется список всех возможных форм этого слова. Далее сканируется словарь базы. Если очередное слово базы "словарное", то оно считается подходящим только при полном совпадении со словом запроса (то есть слово "арена" не будет выдано на запрос сходства с "аренда", хотя эти слова схожи). Если же слово из базы не "словарное", то оно выдается, если схоже с какой-либо из форм искомого слова. Так найдутся те слова, которые не были опознаны (и поэтому не нормализованы) во время создания базы из-за ошибки и в корне слова, и в окончании.
  2. Пусть слово запроса не "словарное" (не опознано по словарю морфоанализа). Строим варианты нормализации этого слова, исходя из окончания (этот процесс называется псевдонормализацией). Далее сканируем словарь базы. Если очередное слово базы не "словарное", то для него также строим варианты нормализации, если же слово "словарное", оно уже нормализовано. Далее производится сравнение по сходству вариантов нормализации слова из запроса и слова из базы. Если сравнение сработает, слово годится. При этом могут не опознаться те слова, у которых ошибка в окончании, так как псевдонормализация "несловарного" слова производится по его окончанию.

Поиск однокоренных слов

Если эта опция включена, то при поиске со словами запроса будут отождествляться не только слова документов, соответствующие словам запроса с точностью до словоизменения, но и все слова с таким же корнем (точнее - таким же началом).

Алгоритм поиска однокоренных слов (поиск по парадигме)

Если для слова запроса задан поиск по парадигме, то подходящими являются те слова, которые имеют общий корень со словом из запроса. Например, при запросе "программа" (с учетом парадигмы) считаются подходящими такие слова, как "программа", "программный", "программист", "программистка", "программирование", "программистский" и т.д.

Формально два нормализованных слова считаются родственными по парадигме, если они имеют некое общее начало, а окончания (оставшиеся "хвосты") зарегистрированы как пара по парадигме (пары окончаний находятся в словаре парадигмы). При этом возможен некоторый "шум", то есть могут взяться слова другого смысла (например, слова "белый" и "белка" формально родственны по парадигме, но разные по смыслу). Также возможны и "потери", так как по парадигме не могут взяться слова, очень близкие по смыслу, но с различным началом (особенно это заметно при наличии разных приставок, которые часто лишь незначительно меняют оттенок смысла, но совершенно меняют начало слова).

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

Поиск по парадигме происходит так:

Слово из запроса считаем нормализованным. Сканируем словарь базы (не весь, а только те его части, где могут находиться родственники по парадигме). Если слово из базы "словарное", то проверяем на родственность по парадигме слова запроса и слова базы, если же слово базы "несловарное", то подвергаем его процессу псевдонормализации и затем сравниваем по парадигме слово из запроса и все варианты псевдонормализации. Слово годится, если хотя бы одно сравнение сработает.

Поиск по парадигме с учетом опечаток

Эксперименты показали, что приемлемый уровень "шума" оказывается при таком подходе: сначала производится отбор всех слов, родственных по парадигме, которые есть в словаре базы (парадигма без учета опечаток). Этот процесс описан выше. Получаем список слов (нормализованных). Далее сканируем словарь базы, сравнивая сходство каждого слова базы со списком слов, отобранных по парадигме. При этом, если слово базы "несловарное", то оно перед сравнением псевдонормализуется. Если сравнение с одним из слов списка сработает, то слово годится.

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

Показ результатов поиска

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

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

Задать диапазон дат

В большинстве баз имеется поле, содержащее дату (см. Обобщенное поле дата.) Это поле может, например, содержать дату изготовления документа или дату его ввода в базу. Вы можете задать начало и конец интересующего вас интервала времени, заполнив поля начала ("с") и конца ("по") интервала.

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

Если датой начала является символ *, то в запросе началом интервала считается 1 января 1000 года.
Если датой конца является символ *, то концом интервала считается 1 января 2038 года.

Дату можно задать в виде звездочки или с помощью одной из следующих форм:

<день> и< месяц> можно задавать одной или двумя цифрами;
<год> можно задавать двумя или четырьмя цифрами. Если указаны только две цифры года:
     числа большие 38 относятся по умолчанию к 20 веку (добавляется 1900);
     числа меньшие или равные 38 -  к 21 веку (добавляется 2000).
То есть дата 5.10.97 понимается как 05.10.1997, а дата 23.6.03 понимается как 23.06.2003

Если в какой-то базе нет поля с датой, поиск дат из указанного диапазона осуществляется по всему тексту документов.