PDA

Просмотр полной версии : Поиск по сайту - кто как организует?


Ивано++
05.07.2013, 16:08
Добрый день.

Собственно с толкнулся с необходимостью организовать поиск по сайту. Кто как эту задачу решает. Пока нашел 3 варианта:

1. Index_search (не нравиться) - и слишком сложно...

2. Поиск по mysql-таблицам - в ручную задается описание - но так подумал проискать весь сайт - это а) нагрузка на него б) да и потом слишком много колонок по которым надо проискивать, а также pi_flexform - с XML-данными не очень-то удобно....

3. Поставить яндекс.поиск - но как понимаю это все равно должно проходить время пока он проиндексирует сайт - или как?

Кто как еще решает вопросы поиска по сайту?:)

--
Иван.

dmartynenko
05.07.2013, 19:37
Google :)

А вообще делать свой поиск я считаю излишеством.

Это настолько сложная тема, что сделать что-то качественное "на коленке" не получиться. Можно конечно Sphinx и прочие вещи использовать, но это большая Работа (с большой буквы) все это запустить, настроить и заставить качественный результат выдавать.

Лучше сделать полный и обновляемый sitemap и тем самым дать возможность поисковикам быстро сайт индексировать. Так и в поисковиках сайт будет лучше подниматься и поиск от яндекса-гугла на сайт можно вставить не боясь что он не актуальный.

Ивано++
05.07.2013, 19:47
Значит будем гугул ставить или яндекс...
Единственное я как понимаю поиск будет выдавать всеравно после того, как проиндексирует...

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

А другое дело вот так...

Valery Romanchev
06.07.2013, 01:09
Зависит от проекта... не всем заказчикам подходит яндекс, хотя в плане реальных задач поиска наверное лучший вариант. К тому же у яндекса есть некий модуль для TYPO3 для отправки старниц на индексацию.

index_search кстати практически всех устраивает... выглядит он вполне презентабельно и находит... заказчики не жалуются. Проблема с тормозами index_search на больших сайтах вроде уже решена в 6-ой версии.

Ивано++
06.07.2013, 01:26
В общем - еще посмотрим...
Тогда index_se...

Просто его минус вижу для себя в том, что его надо связывать с обходчиком сайта "по расписанию"...
А это уже в той или иной степени привязывает сайт к определенному "теплому хостингу" - который требует даже не typo3, а именно Index_ search. Это как с imagemagick - который по умолчанию есть не у всех - и от сюда ряд вытекающих последствий.

Андрей Аксенов
06.07.2013, 16:11
А что насчет этого решения: http://typo3.org/extensions/repository/view/solr
кто-нибудь использовал в жизни?

Ивано++
11.08.2013, 18:46
А что насчет этого решения: http://typo3.org/extensions/repository/view/solr
кто-нибудь использовал в жизни?

Данное не использовать (хотя слышал про это на одном из форумов), но думаю что это опять же очень не гибко. Один человек пришел в ужас когда узнал что типо (как он ее называет) - не умеет сама сжимать картинки и ей нужен какой-то Imagemagick... Самая интересная тема для меня - это все таки поиск по сайту...

Все они (поиски для TYPO3) расчитаны на то, что бы лазить (как бот-паук) по сайту - и индексировать - некие недо-гуглы, яндексы и прочие...

Самый простой пример - вот у нас на странице произошли кое-какие изменения (по примеру включенности, выключенности, старта и енда тайма)... И все - данные в поиске уже не актуальны.
А есть еще более сложный пример:


По примеру хотя бы дерева страниц
Раздел 1 > Раздел 2 > Раздел 3 > Раздел 4

Что будет если мы выключим к примеру Раздел 2 = hidden = 1
По логике вещей раздел 3 и 4 также должны скрыться...

И с другой стороны делать поиск по mysql-полям - это опять же наверное получать не совсем актуальное представление сгенерированного содержимого страницы. Т.к. слишком много процессво по сборке итогового Html-кода может происходит...

Другое дело когда организовывается поиск по конкретно по типу данных (к примеру фильтр в разделе)...

По этой причине даже и не знаю - вроде все идеально с TYPO3...
А вот поиск по сайту...

Хотелось бы конечно - что бы он был самый актуальны...

Google :)

Лучше сделать полный и обновляемый sitemap и тем самым дать возможность поисковикам быстро сайт индексировать. Так и в поисковиках сайт будет лучше подниматься и поиск от яндекса-гугла на сайт можно вставить не боясь что он не актуальный.

Про sitemap - согласен...
Но все таки поиск по сайту и поиск в интернете это разные вещи...

Вот есть к примеру корпоративный сайт фирмы из разряда малого бизнеса... У них 300-350 страниц на сайте. 50% страниц занимает представление их продукции (не интернет магазин)...

Продукция техническая (что то вроде гайки диаметром 2, длиной 3)...
И люди которые заходят на сайт как правило больше внимания уделяют сразу поиску, а не хождению по разделам - это технические люди, которые понимают сразу что хотят...

Ивано++
11.08.2013, 19:51
Вот самый простой пример с file_get_contents
Есть карта сайта (содержит все страницы):

http://studsovet-life.ru/sitemap.xml

И ради интереса делаем file_get_contents (условно говоря на индексирование)...
<?php
/*print "<pre>";
print_r(get_headers($url));
print_r(get_headers($url, 1));
*/

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;


$content = file_get_contents ("http://studsovet-life.ru/sitemap.xml");
preg_match_all( '#<loc>(.+?)</loc>#is', $content, $reg );

foreach ($reg[1] as $key => $value){


$a = file_get_contents($value);
print "Получен " . $value . "<br />";
#print $a;

}

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 4);
echo 'Скрипт генерировался '.$total_time.' seconds.'."\n";
#print "<pre>";

#print_r($reg[1]);

?>

Запускаем этот скрипт -
http://studsovet-life.ru/test.php = 8 секунд работы

И весь сайт условно говоря проиндексирован...

Ставим cron - и время от времени (бот или как-еще придумать) - сайт будт обходиться...
Если пользователь - кто-то во FE-что-то меняет - то ставим в очередь на индексаци... либо после "кнопки сохранить" - запускаем функцию перенидексации страницы.


И потом страницы которые не изменились - можно не индексировать.


Т.к. на сайте у нас может быть сложная логика - к примеру виртуальные страницы - мы их также добавляем в отдельные карты сайта...
В общем разбиваем. В meta-header - добавляем специальный параметр который будет отвечать за тип информации.

Также еще есть интересное расширение: Crawler - что то вроде обходчика.