Возможна ли индексация (т.е. вывод при поиске) фраз/слов, если они располагаются на каждой странице запросом из базы данных?
Сейчас на сайте проиндексированы только "ручками" набранные слова.
есть страницы, на которых содержание "выдергивается" из таблицы базы данных запросом. в поиске содержание этих страниц не участвует, а хотелось бы. или выход только один - создавать "ключевые слова"? но страниц - тысячи...
в друпал.
хотя, и сам не знаю: в друпал - точно содержание не участвует в поиске. а в поисковых системах - не знаю, там еще, возможно, кэш не успел обновиться.
Из всего сумбура сложно что либо понять...
Поисковику параллельно ваше внутреннее устройство, если текст доступен в HTML для анонимов - он будет проиндексирован и участвовать в его выдаче.
Для участия в поисковой выдаче Drupal (если это не Node или CCK (или выдача других модулей)) вам нужно попасть в его индексатор. Все зависит как хранится и обрабатывается этот контент. Смотрите [ru-api=hook_update_index]hook_update_index[/ru-api]().
Для поиска конкретно в нодах реализуется nodeapi('update index') и nodeapi('search result'). Однако, необходимо учесть, что поисковая система уже индексирует весь видимый вывод ноды - все то, что отображается с помощью hook_view() и hook_nodeapi('view'). Обычно этого достаточно. Этот механизм стоит использовать лишь если необходима индексация дополнительных скрытых данных.
То есть, если отображение в ноде сделано корректно и отображается при hook_view() и hook_nodeapi('view'), то ничего делать не нужно. Если сделано криво, то ручками заносим в индекс - nodeapi('update index').
$result = db_query("SELECT CAT, Firm, NUM FROM MEBEL where Name='%s' ORDER BY Firm", $node->title); $rows = array(); while($row = db_fetch_object($result)){ $header = array('Название по прайсу', 'Мед. компания', 'Цена услуги'); $rows[] = array($row->CAT, $row->Firm, $row->NUM); } print theme('table', $header, $rows, array()); ?>
а вот содержание почему-то не индексируется, т.е., например, есть название аппарата (Olimpus CV-70). Так вот, через поиск я не могу найти ни "Olimpus", ни "CV-70", ни "Olimpus CV-70". При этом то, что я набрал в поле "Текст" создаваемого материала (т.е. не запросом в Content Templates, а html-кодом), прекрасно индексируется.
Вот, а сейчас увидел, что Яндекс прекрасно это название "видит" на моем сайте. Как Drupal показать это и все остальное?
Да, для этих страниц созданы специальные типы материалов. м.б. их где-то еще "прописать" надо?
Комментарии
подробнее расшифруйте
есть страницы, на которых содержание "выдергивается" из таблицы базы данных запросом. в поиске содержание этих страниц не участвует, а хотелось бы. или выход только один - создавать "ключевые слова"? но страниц - тысячи...
поиск в друпал или в поисковой системе?
в друпал.
хотя, и сам не знаю: в друпал - точно содержание не участвует в поиске. а в поисковых системах - не знаю, там еще, возможно, кэш не успел обновиться.
может кто-нибудь знает как решить эту проблему?
Из всего сумбура сложно что либо понять...
Поисковику параллельно ваше внутреннее устройство, если текст доступен в HTML для анонимов - он будет проиндексирован и участвовать в его выдаче.
Для участия в поисковой выдаче Drupal (если это не Node или CCK (или выдача других модулей)) вам нужно попасть в его индексатор. Все зависит как хранится и обрабатывается этот контент. Смотрите [ru-api=hook_update_index]hook_update_index[/ru-api]().
Читаем тут -- http://api.drupal.ru/api/group/search/6
То есть, если отображение в ноде сделано корректно и отображается при hook_view() и hook_nodeapi('view'), то ничего делать не нужно. Если сделано криво, то ручками заносим в индекс - nodeapi('update index').
содержание ноды берется через запрос, сохраненный в Content Templates (благодаря усилиям Dan - еще раз спасибо).
<?php
print $body;
if(!($node = menu_get_object()))
return;
$result = db_query("SELECT CAT, Firm, NUM FROM MEBEL where Name='%s' ORDER BY Firm", $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->CAT, $row->Firm, $row->NUM);
}
print theme('table', $header, $rows, array());
?>
а вот содержание почему-то не индексируется, т.е., например, есть название аппарата (Olimpus CV-70). Так вот, через поиск я не могу найти ни "Olimpus", ни "CV-70", ни "Olimpus CV-70". При этом то, что я набрал в поле "Текст" создаваемого материала (т.е. не запросом в Content Templates, а html-кодом), прекрасно индексируется.
Вот, а сейчас увидел, что Яндекс прекрасно это название "видит" на моем сайте. Как Drupal показать это и все остальное?
Да, для этих страниц созданы специальные типы материалов. м.б. их где-то еще "прописать" надо?
В итоге, оказалось, что дело в поиске drupal: модуль searchbypage замечательно ищет по всему сайту.