пятница, 21 мая 2010 г.

Как я настраивал indexed_search на TYPO3 (под Suse Linux)

Как обычно, для решения любой задачи, TYPO3 использует комплексный и глобальный подход... Поэтому настройка indexed_search на сайте у меня заняла целый рабочий день. Но из-за этого я не перестаю любить эту систему и желать крепкого здоровья парням пишущим горы запутанной документации. А всё на самом деле оказывается очень просто.

Для настройки индексированного поиска по сайту нужны следующие вещи:

1. Само-собой - indexed_search, который нужно просто активировать в менеджере расширений. Это движок и мозги системы поиска, которые занимаются индексацией контента и внешних файлов (pdf, doc, xls, rtf ...). Нужно знать, что для индексации внешних файлов, indexed_search использует дополнительные внешние утилиты - pdftotext и pdfinfo, catdoc и др., которые отдельно устанавливаются на операционную систему. В настройках плагина нужно обязательно указать пути к этим программам:



2. Для того, чтобы "натравливать" indexed_search на тот контент, который требует индексации, нужен спецальный сканер. Этим сканером является ext - Site Crawler (ключ, для поиска в репозитории расширений - crawler). Настраивается crawler как с помощью TypoScript (что я и сделал), так и с помощью визуальной формы. Вот настройки сканера для одного из моих сайтов:

tx_crawler.crawlerCfg.paramSets.test = &L=[0-3]&contentId=[_TABLE:tt_content]
tx_crawler.crawlerCfg.paramSets.test {
procInstrFilter = tx_indexedsearch_reindex
baseUrl = http://www.DOMAIN.com.ua/
# настройка индексации списка новостей
# _PID:4 указывает на системную папку где хранятся все Новости сайта
tt_news = &tx_ttnews[tt_news]=[_TABLE:tt_news; _PID:4]
tt_news.procInstrFilter = tx_indexedsearch_reindex
tt_news.cHash = 1
# страница единичного просмотра Новости
tt_news.pidsOnly = 37

}

Данные настройки помещаются в свойства корневой страницы сайта:



Нужно также не забыть, что Crawler настраивается и в менеджере расширений. Важным параметром здесь является - PHP Path [phpPath], который указывает сканеру где находится PHP.

3. Так как контент сайта постоянно меняется, то сайт требует периодической переиндексации. Как это сделать? Просто нужно запускать сканер по расписанию! Здесь на помощь приходит утилита crontab. Чтобы отредактировать настройки crontab, нужно запустить его с параметром "-e": crontab -e. Почитать о настройках крона можно, например, здесь.

У меня же настройки такие:




4. Для того, чтобы плагину indexed_search разрешить индексацию страниц, в TS-шаблоне необходимо установить параметр index_enable:

page.config.index_enable = 1
# разрешить индексирование внешних файлов
# page.config.index_externals = 1
# индексируются только закешированные страницы
# page.no_cache = 0

Indexed_search будет индексировать всё, что находится между специальными комментариями и .
Вот пример HTML-шаблона:

<div id="header">
###searchbox###
<div id="logo"><img src="img/logo.png" /></div>
</div>
<div id="content1">
<div id="cornercontent1"></div>
<div id="tabcontent1"></div>
<div class="sitetext">
<!--TYPO3SEARCH_begin-->
<!-- ###CONTENT### -->
<!-- ###CONTENT### -->
<!--TYPO3SEARCH_end-->
<!-- ###SITENEWS### -->
<!-- ###SITENEWS### -->
</div>


Как видно из примера, область со списком новостей сайта (SITENEWS) индексироваться не будет. Согласно нашим настройкам, Новости будут индексироваться другим способом (см. выше).

5. Чтобы отображать результаты поиска создайте отдельную страницу и вставьте в нее плагин - Indexed Search.



Запишите или запомните id этой страницы.


6. Последнее, что нам осталось - прикрутить строку поиска на сайте. Для этих целей я обычно использую плагин macinasearchbox.

Если для строки поиска в HTML-шаблоне отвести специальное место и "пометить" его маркером - ###searchbox### (см.выше.), то оживить его можно с помощью следующего TS-скрипта:

# Прикручиваем плагин macinasearchbox
marks.searchbox >
marks.searchbox < plugin.tx_macinasearchbox_pi1
# pidSearchpage = 47 - указывает на страницу отвечающую за показ результатов поиска
marks.searchbox.pidSearchpage = 47
# указываем путь к HTML-шаблону строки поиска
marks.searchbox.templateFile = fileadmin/templates/searchbox_template.html

# Это дополнительные настройки для indexed search (скрываем ссылку advancedSearch)
plugin.tx_indexedsearch.show.advancedSearchLink = 0
plugin.tx_indexedsearch.show.rules = 0



Как всё это работает на практике можно посмотреть на сайте http://www.arcasalus.com.ua/


P.S. Забыл предупредить! Для сайтов с большой загрузкой indexed_search вреден, т.к. нагружает систему и работает не быстро.

5 коммент.:

Анонимный комментирует...

сайт www.arcasalus.com.ua недоступен, а рецепт у меня на typo3 4.4.4 увы не заработал, очень жаль. И форма эта полная хрень, спрашивает капчу, а нажать сабмит негде. Браузер FF

Вадим Гиркало комментирует...

Сайт на который я ссылался действительно не работает, но это уже к его хозяину... Теперь по-порядку:
1. Рецепт на typo3 4.4.4 не проверял, но думаю скоро такая возможность у меня будет;
2. У меня эта форма сроду капчу не просила, а кнопка сабмит может быть как скрыта, так и не быть, все зависит от html-шаблона и CSS.

Анонимный комментирует...

Пес с ним с сайтом, многие что делал я также куда-то улетучились, что поделать. Форма просит капчу, так как я анонимный пользователь, можете убедиться ;) я не могу позволить себе роскошь регистрироваться на каждом ресурсе. Короче, без обид, я уверен что в этом рецепте есть много полезного и скорее всего он работал у вас в руках. Но стоит упомянуть что без краулера можно жить и даже при наличии новостей, если конечно их мало и они редко обновляются. Что если на сайте есть три колонки то можно посредством ts обрамления stdWrap.wrap = | и условий задать гибко области для индексации. Без macinasearchbox можно также обойтись, например просто задав форму поиска в HTML шаблоне или так как написано тут посредтвом несложного ts http://www.typo3wizard.com/en/snippets/cool-stuff-typoscript/ts-based-searchbox-for-indexed-search.html
Самым большим подводным камнем я считаю "подарок" от разработчиков стандартного Indexed Search Engine (indexed_search) это значение параметра Min TTL (hours) for indexed page [minAge] которое можно поменять в Ext Manager в свойствах этого плагина. Суть в том что по умолчанию его значение равно 24 (в часах), т.е. после сохранения страницы в BE пройдет 24 часа и только после этого заход на страницу ее проиндексит. И это здорово мешает разработчику понять почему не работает стандартная индексация и почему нормально настроенный поиск ничего не выдает.

Анонимный комментирует...

Вдогонку: было бы клево на русском рассказать как настроить crawler и привести варианты рабочих конфигураций, есть замечательная страница http://wiki.typo3.org/wiki/Crawler но мне пока Crawler заставить работать не удалось.

Вадим Гиркало комментирует...

Думаю, что статейку про crawler я ближайшее время все-таки напишу...

Отправить комментарий

О себе

Моя фотография
Вадим Гиркало
Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Просмотреть профиль

Позвонить мне в Skype

TOP - 3