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

       

Индексирование книжного магазина


Пример 5-6. Конфигурация OLEDB-источника данных

Ниже приведена настройка индексирования, которую можно было бы использовать для индексирования книжного магазина. Предположим, что база данных магазина поддерживается MSSQL-сервером на компьютере BOOKDB в каталоге bookshop, который состоит из трех таблиц. Первая таблица books описывает книги и содержит следующие поля. bookid ;идентификатор книги authorid ;идентификатор автора catid ;идентификатор темы title ;название книги description ;краткое содержание Вторая таблица authors описывает авторов и содержит следующие поля. authorid ;идентификатор автора author ;имя автора biograph ;биография автора Третья таблица categories описывает многоуровневый тематический каталог и содержит следующие поля. catid ;идентификатор темы owner ;идентификатор темы верхнего уровня из этой же таблицы category ;название темы Идентификаторы в таблицах являются числами, остальные поля содержат обычный текст без форматирования.

Конфигурационный файл индексатора включает в себя следущую секцию. <DataSource> Name: books Module: oledb.dll Config: sqldb.cfg Options: IndexNofollow UrlCaseFold </DataSource> При поиске мы хотим сгруппировать результаты по темам книжного каталога, поэтому добавим в конфигурацию следующую директиву: Groups: cat Эта директива позволит автоматически создать файлы группировочных атрибутов в процессе индексирования документов, однако для этого надо определить документный атрибут cat, то есть настроить парсер: <DocFormat> MimeType: text/html Config: html.cfg </DocFormat>

Конфигурационный файл источника данных sqldb.cfg имеет следующий вид. provider = SQLOLEDB.1 datasource = BOOKDB catalog = bookshop userid = ***** password = ***** <!-- автоматически создадим файлы для группировочного атрибута --> <Dump> cat.c2n = SELECT catid, category FROM categories/catid/category cat.c2p = SELECT catid, owner FROM categories/catid/owner </Dump> <!-- определим шаблон документов для индексирования, каждый документ соответствует одной книге --> <book> urlquery = SELECT bookid FROM books ORDER BY 1 keyfields = bookid docquery = SELECT b.catid, b.title, b.description, a.author, c.category \ FROM books b, authors a, categories c \ WHERE b.catid = c.catid AND b.authorid = a.authorid AND b.bookid = $1 indexfields = catid, title, description, author, category template = c:\yandexsite\book.htm </book>


Файл c:\yandexsite\book.htm шаблона документа, представляющего одну книгу, имеет следующий вид. <HTML> <HEAD> <META NAME="catid" CONTENT="$1"> </HEAD> <BODY> <H1>$2</H1> <H2>$4</H2> <H3>$5</H3> <P>$3</P> </BODY> </HTML>

Конфигурационный файл парсера html.cfg имеет следующий вид (см. раздел Конфигурация HTML-парсера). <Zones> title H1 author H2 category H3 description P </Zones> <Attributes> cat INTEGER/meta.catid </Attributes>

Так как документ разбит на несколько поисковых зон, книги можно искать как по полному описанию, так и независимо по названиям, авторам, описаниям, категориям каталога. Например, найдем произведения Пушкина, в описании которых встречается слово сказка: description[сказка] && author[Пушкин]

Copyright © 1997 ? 2004 «Яндекс»
НазадСодержаниеВперед
Парсеры документных форматовУровень вышеГруппировочные атрибуты
Что вы ищете: 
 на сайтев интернете  
Службы Яндекса: Маркет - Деньги - Почта - Народ - Новости - Каталог - Директ - Открытки - Отпуск
Энциклопедии - Словарь Лингво - Закладки - Мой Яндекс - Бар - Игрушки - Гостиная
  Copyright © 1997?2004 «Яндекс» Обратная связь 


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