Яndex.Server 3.1 ДОКУМЕНТАЦИЯ

       

Пример файла конфигурации для индексирования и поиска по MySQL-базе.


Содержимое файла mysql_datasrc.cfg может быть таким: KeepAlive yes HostName localhost BaseName mydb User search_user Password search_user_pass UrlQuery SELECT id,ch_id FROM programs DocQuery SELECT concat( \ 'Content-Type: text/html\n',\ 'Last-Modified: ',UNIX_TIMESTAMP(m_time),'\n\n',\ '<HTML><HEAD>',\ '<TITLE>',user,'</TITLE>',\ '<META NAME="Description" Content="',pr_name,' ',pr_descr,'">',\ '</HEAD>\n',\ '<BODY>\n',content,'\n</BODY></HTML>'\ ) FROM programs WHERE id=$1 ! где UNIX_TIMESTAMP(m_time) - время модификации записи в секундах; ! user, pr_name, pr_descr, content - индексируемые поля SQL-базы, ! из которых генерируется html-документ.

В данном примере для каждой записи MySQL-базы генерируется HTML-документ. Это видно по содержимому ключа DocQuery. В нем определен медиа тип text/html. Кроме того, обратите внимание на то, что для получения списка индексируемых записей в UrlQuery используется два поля базы данных (id и ch_id), а для формирования результирующего документа задействовано лишь одно из них (id=$1). На первый взгляд кажется, что второй параметр здесь лишний. И в данном случае это действительно так.

Однако часто встречаются ситуации, в которых без дополнительной информации из SQL-базы не обойтись. Например, на вашем сайте размещена программа телепередач, и вы организовали поиск по ней. Для наглядности страницу с результатами поиска вы хотите оформить так, чтобы рядом с названием передачи выдавалась иконка канала, на котором она будет идти. Имя этой иконки очень удобно передавать через дополнительный параметр (в $2). Подобное возможно, т.к. переменные вида $n (в которые заносятся текущие значения полей ключа UrlQuery) можно использовать не только для формирования внешнего вида исходного документа (в ключе DocQuery), но и при подготовке дизайна страницы результатов поиска.

Ранее мы неоднократно упоминали, что результирующий документ не обязательно должен являться HTML-страницей. Данные из базы могут быть представлены в любом другом формате. Вот, например, как можно представить найденную информацию в текстовом виде (медиа-тип text/plain): DocQuery SELECT concat( \ 'Content-Type: text/plain\n',\ 'Last-Modified: ',UNIX_TIMESTAMP(m_time),'\n\n',\ content) FROM programs WHERE id=$1

Таким образом, внешним представлением поступающих от SQL-сервера данных вы можете свободно управлять.



Содержание раздела