Глава 1. Введение

Содержание
1.1. Основные концепции
1.2. Документы, зоны и атрибуты

1.1. Основные концепции

1.1.1. Компоненты Яndex.Server 3.8 Free Edition

Яndex.Server 3.8 Free Edition представляет собой набор программных модулей для организации полнотекстового поиска информации в заданных коллекциях документов. Яndex.Server 3.8 Free Edition состоит из следующих основных компонентов.

Коллекция документов

Яndex.Server 3.8 Free Edition работает с одной или несколькими коллекциями документов, в которых осуществляется поиск. Поиск в каждой коллекции документов осуществляется независимо. Каждая коллекция характеризуется уникальным именем (текстовой строкой). Если существует только одна коллекция документов, ее имя обычно выбирается пустым. Правила, по которым составлена коллекция документов, указываются в секции Collection конфигурационного файла.

Индексатор

Индексатор - это подсистема, анализирующая документы данной коллекции документов и сохраняющая информацию о них в специальных индексных файлах. Каждой коллекции документов соответствует свой набор индексных файлов, который хранится в отдельной директории, и свой собственный индексатор, настройка которого задается в секции Collection конфигурационного файла.

Интерпретатор формата документа

Индексатор разработан так, чтобы индексировать документы произвольного формата. С этой целью чтение документа и интерпретация его формата осуществляется с помощью отдельных модулей, по одному модулю на каждый формат документа. Эти интерпретирующие формат документа модули в дальнейшем называются парсерами. Настройка парсера задается в подсекции DocFormat секции Collection конфигурационного файла. Дополнительная информация о парсерах находится в секции Секция DocFormat.

Источник данных

Индексатор разработан так, чтобы получать документы из произвольных источников или хранилищ документов, таких как файловая система, базы данных, архивы или веб. С этой целью получение содержимого документа осуществляется с помощью отдельных модулей, по одному модулю на каждый формат хранилища документов. Эти модули, понимающие структуру хранилища документов и предоставляющие документы индексатору, в дальнейшем называются источниками данных. Настройка источника данных задается в подсекции DataSrc секции Collection конфигурационного файла.

Поисковый модуль

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

Языковой модуль

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

HTTP-сервер

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

Таким образом, основными логическими частями Яndex.Server 3.8 Free Edition являются индексатор и поисковый модуль. После создания индексных файлов индексатор обычно прекращает прекращает работу, в то время как поисковый модуль после запуска находится в постоянном ожидании запросов на поиск. Для успешного старта поисковому модулю необходимы индексные файлы, созданные индексатором.

Если коллекция документов со временем изменяется за счет добавления, изменения или удаления документов, индексные файлы постепенно теряют актуальность. В этом случае необходимо время от времени запускать индексатор и обновлять индексные файлы. Обычно при этом используются настройки источника данных, позволяющие не переиндексировать неизменившиеся документы.

1.1.2. Основные возможности

1.1.2.1. Возможности языка запросов

Запрос на естественном языке

Возможность обращаться к поисковой машине на естественном (русском или английском) языке (например, играл ли Спартак с Динамо в марте?).

Поиск всех вариантов слов

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

Поиск точной словоформы

По умолчанию поиск учитывает все формы заданного слова, однако существует возможность поиска по точной словоформе.

Корректная работа с неологизмами

Построение словарных гипотез для слов, не содержащихся в базовом словаре (неологизмы, сленг, имена собственные и т.д.)

Поиск устойчивых словосочетаний

Возможность находить документы, в которых заданные слова идут строго подряд.

Поиск с расстоянием

Возможность находить документы, в которых указанные слова находятся на заданном расстоянии друг от друга, или на расстоянии, не большем (не меньшем) данного. Расстояние может быть задано в словах или в предложениях.

Логические операторы

Поддержка логических операторов И, ИЛИ, И НЕ как в пределах документа, так и в пределах предложения.

Поиск по дате

Возможность искать документы с датой последнего изменения в заданном диапазоне.

Поиск в зонах

Возможность искать в определенных зонах документа, заданных при индексировании. В частности, можно искать в заголовках и аннотациях HTML-документов.

Поиск в атрибутах

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

Многоязыковая поддержка

Возможность одновременного распознавания нескольких языков с учетом кодировок.

1.1.2.2. Возможности поискового сервера

Множественные коллекции

Поддержка нескольких независимых коллекций документов. Возможность поиска в одной или нескольких коллекциях.

Тематические разделы

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

Кластеризация результатов

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

Ранжирование результатов

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

Многостраничные результаты

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

XML-представление

Результаты поиска могут быть представлены в виде XML-документа с определенной схемой.

Дизайн по умолчанию

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

Расширенный поиск

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

Подсветка фрагментов

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

Подсветка найденных слов

Возможность просмотреть найденный документ с выделенными поисковыми словами. Возможность пролистывать документ к следующему или предыдущему найденному слову. Статистика найденных слов для каждого документа.

1.1.2.3. Возможности индексатора

Независимые индексирование и поиск

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

Неограниченный размер

Не содержит ограничений на число индексируемых документов, их размер и суммарный размер индекса.

Быстрый компактный индекс

Полнотекстовый индекс без учета точных словоформ занимает менее одной трети от объема проиндексированного текста и создается со скоростью около 40 Мб/мин на однопроцессорной машине класса Pentium IV, 512МБ ОЗУ.

Стоп-слова

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

Поддержка HTTP-протокола

Содержимое индексируемых документов может быть получено в результате запроса к HTTP-серверу. Индексируемый документ может представлять собой результат работы серверного скрипта, принимающего параметры по методу GET. Автоматическая поддержка редиректов.

Настройка HTTP-соединения

Возможность настраивать время разрыва HTTP-соединения, используемый прокси-сервер, пароли доступа и посылаемые HTTP-заголовки для различных групп индексируемых документов.

Поддержка локальной сети

Содержимое индексируемых документов может быть получено чтением файловой системы локальной сети.

Использование гипертекстовых ссылок

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

Распознавание кодировок

Возможность автоматически распознавать язык и кодировку индексируемого документа.

Гибкая настройка индексатора

Возможность переиндексировать только измененные документы. Возможность оставлять в индексе документы, временно недоступные во время индексирования. Независимая настройка многочисленных параметров индексирования для разных групп документов.

Гибкие фильтры

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

1.1.3. Требования к аппаратному и программному обеспечению

Таблица 1-1. Поддерживаемые платформы

Операционная системаВерсииВерсия компилятора
FreeBSD-4 (i686)4.9 и вышеGCC 3.4.6
FreeBSD-5 (i686)5.5 и вышеGCC 3.4.6
Linux (i686)glibc-2.3 и выше, kernel >= 2.5.66GCC 3.3.5
Windows (i686)9х/NT/2000/XP/2003.MSVC 7.1

Для установки Яndex.Server 3.8 Free Edition необходимо следующее аппаратное и программное обеспечение:

  • 10-50 Мб свободного дискового пространства для установки программных модулей и конфигурационных файлов системы.

  • Свободное дисковое пространство для размещения создаваемых системой файлов индекса и временных файлов.

Замечание: Общий объем свободного дискового пространства, необходимого системе в процессе работы, можно оценить лишь приблизительно. При расчетах нужно учитывать следующее: общий объем индексных файлов может достигать от 30% до 90% суммарного объема проиндексированных документов. При переиндексации потребуется еще примерно столько же места, т.к. создавая новые индексные файлы, индексатор не удаляет старые. Кроме того, при обработке запросов поисковый сервер может создавать временные файлы, количество которых зависит от интенсивности запросов.

1.1.4. Структура и формат конфигурационных файлов

Яndex.Server 3.8 Free Edition настраивается с помощью размещения директив в одном или нескольких текстовых конфигурационных файлах. В некоторых директивах основного конфигурационного файла могут задаваться дополнительные конфигурационные файлы.

Каждая директива конфигурационного файла соответствует одному из параметров настройки. Директивы состоят из одного или нескольких слов, разделенных пробельными символами. Первое слово директивы является ключом, соответствующим настраиваемому параметру, остальные - аргументами, задающими значение параметра. Помимо пробельных символов, ключ директивы может отделяться от аргументов необязательными символами : (двоеточие) и = (равно), но не более, чем одним. Аргументы директивы могут отделяться друг от друга, помимо пробельных символов, символом , (запятая). Конфигурационные файлы включают одну директиву на строку. Для переноса аргументов директивы на следующую строку может быть использован обратный слеш (\), расположенный на конце строки. (То есть, если между символом обратного слеша и символом конца строки находятся только пробельные символы, то директива переносится на следующую строку, а символ \ игнорируется.) Ключи директив конфигурационного файла являются регистро-независимыми, но аргументы директив зависят от регистра символов.

Директивы конфигурационного файла могут быть сгруппированы в секции. Каждая секция начинается со строки <Имя_Секции> и кончается строкой </Имя_Секции>, где Имя_Секции соответствует параметру, который настраивается с помощью одной или нескольких директив, расположенных внутри секции. Секции могут быть вложенными. Директивы конфигурационного файла, которые не лежат в какой-либо секции, считаются принадлежащими подразумеваемой главной секции, включающей весь конфигурационный файл.

Строки конфигурационного файла, расположенные внутри секции и начинающиеся с символов #, ! или ;, рассматриваются как комментарии и игнорируются. Однако, если указанные символы встречаются в середине или конце строки, они считаются значимыми. Пустые строки и пробельные символы в начале строки игнорируются, поэтому могут использоваться, чтобы сделать запись более ясной. Помимо этого, в любом месте конфигурационного файла могут быть расположены комментарии в XML/HTML-стиле, начинающиеся с символов <!-- и заканчивающиеся символами -->.

Ниже приведен фрагмент конфигурационного файла Яndex.Server 3.8 Free Edition

Пример 1-1. Формат конфигурационного файла

  <Server>
  
  	WorkDir		/yandex/server
  	IPAddress	192.168.0.1
  	Host		myhost
  	Port	    17000
  	Threads	    5
  	QueueSize	20
  	ServerLog	yandex.log
  
  	<Authorization>
  		UserName	user
  		UserPassword	password
  	</Authorization>
  
  </Server>
  
  <Collection id="abc" autostart="yes" >
  
  	     IndexDir : workindex
  	      TempDir : newindex
  	 StopWordFile :
  	GlobalOptions : Update StoreArchive IgnoreWordFreqs DiscardStopWords StoreIndexingDate
  	  DocProperty :
  	       Groups :
  
  
  
  	<IndexLog>
  		Filename : index.log
  		   Level : Config Warning Info
  	<IndexLog>
  
  
  	<DocFormat>
  		MimeType : text/html
  	</DocFormat>
  
  	...
  
  	<DataSrc id="ftds">
  		...
  
  	</DataSrc>
  
  	...
  
  </Collection>
  
  <Collection  id="def" autostart="no" >
  
  	...
  
  </Collection>
  
  	...
  

1.1.5. Миграция с Яndex.Server 3.4

Изменения формата конфигурационного файла по сравнению с предыдущей версией связано в первую очередь с изменением архитектуры программы, ключевым понятием которой в настоящее время является понятие "источник данных".

1.1.5.1. Изменения в формате конфигурационного файла

Настройка файла протокола индексирования и выдачи тестовой информации
  	#
  	# Путь к файлу протокола индексирования и настройка выдачи тестовой информации.
  	#
  
  	3.4
  	IndexLog index.log
  	Debug limits config excluded info moreinfo warning backup verbose
  
  
  	3.6
  	<IndexLog>
  	FileName index.log
  	 Level    MoreConfig Warning MoreWarning Info MoreInfo Debug MoreDebug Verbose
  	</IndexLog>
Сохранение точных словоформ
  
  	# Сохранение точных словоформ:
  
  	3.4
  	#	StoreWordForms - Точные словоформы учитываются в индексе.
  	#	DiscardWordForms - Точные словоформы не учитываются в индексе.
  	# Значение по умолчанию: DiscardWordForms
  	#
  
  	3.6
  
  	# Точные словоформы всегда учитываются в индексе.
  
Конфигурация источников данных
  
  	# Конфигурация источников данных
  
  	3.6
  
  	<DataSrc id="ftds"> # Идентификатор стандартного источника
  		Config	ftds.cfg # Внешний ...
  		# ... либо вложеный конфиг
  		<Ftds>
  			<Folder>
  				Path /usr/local/www/data/
  			</Folder>
  			<Extensions>
  				text/html: .html .htm .shtml
  			</Extensions>
  		</Ftds>
  	</DataSrc>
  
Задание областей индексирования, режимов обновления индекса, режимов получения документов
  
  	# Задание областей индексирования, режимов обновления индекса,
  	# режимов получения документов и т.д.
  
  
  	3.4
  
  	StartUrls	http://_your_site_name_/
  	Disallow /(_index|default)[.]htm[l]?
  	Allow /(199[0-9]|archive)/
  	DefaultHttpPrefix  http://127.0.0.1/
  	DefaultAreaOptions AllowMetaRobots Update RemoveDisconnected Reconnect Recognize AllowPunctBreaks
  
  	<IndexedArea>
  	HttpPrefix /
  	FilePrefix C:/
  	   Options Set attr=value , Unset attr = value \
  			   FindLinks FindDir NoUrlCaseFold UrlCaseFold IndexFollow IndexNofollow \
  			   NoindexFollow AllowMetaRobots IgnoreMetaRobots GetFile GetHttp GetHttp:configid
  
  	</IndexedArea>
  
  
  	3.6
  
  	# Индексирование по http
  
  	<DataSrc id="webds">
  	  <Webds>
  		StartUrls	http://_your_site_name_/
  		Disallow /(_index|default)[.]htm[l]?
  		Allow /(199[0-9]|archive)/
  		DefaultHttpPrefix  http://127.0.0.1/
  		DefaultAreaOptions AllowMetaRobots Update RemoveDisconnected Reconnect Recognize AllowPunctBreaks
  
  		<IndexedArea>
  			HttpPrefix /
  			FilePrefix C:/
  			   Options Set attr=value , Unset attr = value \
  					   FindLinks NoUrlCaseFold UrlCaseFold IndexFollow IndexNofollow \
  					   NoindexFollow AllowMetaRobots IgnoreMetaRobots GetFile GetHttp GetHttp:configid
  		</IndexedArea>
  	  </Webds>
  	</DataSrc>
  
  	# Индексирование по файловой системе
  
  	<DataSrc id="ftds">
  	  <Ftds>
  			<Folder>
  				Path /usr/local/www/data/
  			</Folder>
  			<Extensions>
  				text/html: .html .htm .shtml
  			</Extensions>
  
  	  </Ftds>
  	</DataSrc>
  
Copyright © 1997 – 2007 «Яндекс»