parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

А я-то думал, что реализация - хорошая...

Sanja v.2 08.08.2003 18:13

продумывал её долго, а оказалось... гм.

Видимо, придётся ставить упомянутый флажок в site_content...
#
# В таблице site_doctree описывается древовидная структура страниц на сайте.
# Для каждого элемента хранится информация о его собственном номере, номере
# "родительского" по отношению к нему элемента и общем для всей ветви номере.
#
# Поскольку сайт может быть многоязычным, в дереве хранится информация
# о языке элемента. 
#
# В этой таблице хранится лишь информация о структуре дерева документов;
# содержание страниц вынесено в отдельную таблицу site_content, поскольку
# требуется хранить старые версии документов, иметь возможность вернуть
# старую версию какого-то документа и т.п. 
#
# Для каждого элемента вводятся дополнительные атрибуты, такие как
# отображение/неотображение в меню, кеширование, права доступа
# (все посетители или специальные условия - таблица site_access). 

DROP TABLE IF EXISTS site_doctree;
CREATE TABLE         site_doctree (
  # Уникальный идентификатор документа:
  doc_id        int(16)               NOT NULL auto_increment,
  # Поле для сортировки записей внутри одной ветви:
  orderidx      int(16)               NOT NULL default '0',
  # Идентификатор "родительского" документа:
  parent_id     int(16)                        default '',
  # Идентификатор, общий для всех документов в одной ветви:
  thread_id     int(16)               NOT NULL default '',
  # Можно ли двигать документ?
  is_locked     enum('yes','no')      NOT NULL default 'no',
  # язык документа (определяет, в какой папке, "/", "/en/" 
  # или "/de/" будет находиться fullpath, о котором ниже):
  lang          char(2)               NOT NULL default 'ru',
  # Имя документа в виртуальной "файловой системе":
  filename      varchar(255)          NOT NULL default '',
  # Полный путь - избыточная информация для ускорения 
  # обращений, например, "/en/about/boss/":
  fullpath      varchar(255)          NOT NULL default '',
  # Тип элемента (нормальная страница или ссылка на другой сайт):
  itemtype      enum('page','extlink') 
                                      NOT NULL default 'page',
  # Удаляемые страницы не стираются из базы, а становятся 'невидимыми':
  is_deleted    enum('yes','no')      NOT NULL default 'no',
  # Дополнительный комментарий:
  notes         text                  NOT NULL default '',
  # Права  доступа к элементу (все посетители или согласно 
  # специальным условиям - таблица site_access):
  access        enum('all','custom')  NOT NULL default 'all',
  # Автор документа:
  author        varchar(255)          NOT NULL default 'Unknown',
  # IP-адрес автора правок:
  ipaddr        varchar(255)          NOT NULL default 'Not detected',
  # Отображать ли страницу в меню / на карте сайта?
  in_menu       enum('yes','no')      NOT NULL default 'no',
  # На сколько минут кешировать документ (0 - не кешировать)
  is_cached     int(3)                NOT NULL default '0',
  # Индексы
  PRIMARY KEY          (doc_id),
  KEY idx_lang         (lang),
  KEY idx_orderidx     (orderidx),
  KEY idx_filename     (filename),
  KEY idx_fullpath     (fullpath),
  KEY idx_parent_id    (parent_id),
  KEY idx_tread_id     (thread_id),
  KEY idx_in_menu      (in_menu),
  KEY idx_is_deleted   (is_deleted)
) COMMENT='Documents tree';

# Таблица с содержимым элементов дерева - связывается с таблицей
# site_doctree по ключевому полю doc_id, таблица site_content
# является keyed table.

DROP TABLE IF EXISTS site_content;
CREATE TABLE         site_content (
  # Уникальный ID записи в базе:
  id            int(16)               NOT NULL auto_increment default '',
  # Указывает, с контентом какого документа в дереве мы имеем дело:
  doc_id        int(16)               NOT NULL default '',
  # Заголовок страницы:
  page_title    text                  NOT NULL default '',
  # Тело страницы (если это - не страница сайта, а ссылка на внешний сайт, тут пишется ссылка):
  page_body     text                  NOT NULL default '',
  # является ли тело страницы кодом на Parser или чистым HTML?
  is_code       enum('yes','no')      NOT NULL default 'no',  
  # Другие свойства документа:
  # Keywords в <title>:
  keywords      varchar(255)          NOT NULL default '',
  # Description в <title>:
  description   text                  NOT NULL default '',
  # Добавочный CSS:
  add_css       varchar(255)          NOT NULL default '',
  # Дозволять индексирование поисковиками?
  allow_robots  enum('yes','no')      NOT NULL default 'yes',
  # Шаблон оформлеения страницы:
  template      varchar(255)          NOT NULL default 'default',
  # Дата этой редакции документа:
  revision      datetime              NOT NULL default '0000-00-00 00:00:00',
  # Дополнительный комментарий:
  notes         text                  NOT NULL default '',
  # Автор правок:
  author        varchar(255)          NOT NULL default 'Unknown',
  # IP-адрес автора правок:
  ipaddr        varchar(255)          NOT NULL default 'Not detected',
  # Индексы
  PRIMARY KEY          (id),
  # Полнотекстовое индексирование <title> и <body>
  # (не забыть тонкости поиска по <body> где is_code = yes !!!)
  # FULLTEXT             (page_title,page_body),
  # Индексы для ускорения выборок
  KEY idx_doc_id       (doc_id)
) COMMENT='Documents content - multiple versions (linked to the items in the documents tree)';