Indexisto - поиск для Drupal

Интеграция Indexisto с Drupal.

16.12.2013
22 комментария
4 мин.

Indexisto — это поисковый сервис по типу Google CSE и Yandex поиск для сайта, с одним лишь отличием, вы можете сами регулировать индекс. Т.е. данный сервис идексирует ваш сайт в трёх вариациях:

  1. Обычный поисковый паук, которые заглядывает на сайт и парсит всевозможную инфу, как это делают Yandex и Google. Если его самому не создать то никто заходить и парсить не будет.
  2. Управление индексом собственноручно средствами Indexisto API. Т.е. мы сами отсылаем данные в индекс, а также сами же их оттуда и удаляем.
  3. Работа с базой. Там задается разметка и то ли они парсят, то ли мы им сливаем данные, не суть важно, просто работа с базой ;) Просто она нас не интересует.

Мы остановимся на втором пункте, именно для него был создан соответствующий модуль, о котором мы и поговорим.

Модуль Indexisto — это “мост” между друпалом и Indexisto API. Он сам отсылает нужные нам данные и удаляет их при необходимости. По-сути, всё просто, но есть трудности с настройкой на стороне Indexisto.

Первоначальная настройка

Изначально мы устанавливаем модуль Indexisto и Token на наш друпал-сайт, а затем активируем их.

Заходим в настройки модуля и видим перед собой первоначальную форму.

Первоначальные настройки

Как вы можете заметить тут два раздела: Регистрация и авторизация на indexisto.

Регистрация

Если у вас нету аккаунта в сервисе indexisto, то настоятельно рекомендуется воспользоваться данным методом. В нем достаточно указать ваш email, на который зарегистрируется аккаунт, а также секретный ключ для API. Ключ чем надежнее, тем лучше, он будет использоваться для передачи данных, чтобы никто не смог влезть в ваш индекс. Это поле по-умолчанию уже содержит данные — они случайно сгенерированы, вы можете обновить страницу чтобы получить новый ключ.

После того как вы заполните почту и ключ, а также поставите галчку что хотите зарегистрироваться, для вас будет создан аккаунт, индекс, а также все базовые настройки для его работы, и посещать сайт indexisto даже не понадобиться.
Затем у вас откроются все настройки модуля, как ими пользоваться написано после авторизации.

Авторизация

Вариант для тех, кто уже имеет аккаунт на Indexisto. В таком случае необходимо проделать операции, чтобы поиск заработал.

Самый простой, если вы ранее уже производили настройку для API, то указать секрет и id поискового индекса, а если не делали, то следуйте инструкциям чтобы получить два этих параметра.

Заходим на indexisto и создаём новый индекс.
Задаём название нашему индексу, в поле CMS ничего не трогаем, да и нечего в общем то ;)
В списке появится наш индекс, жмём на него и переходим в его настройки. На вкладке агентов выбираем API.
Затем жмем на *New API agent*. В открывшемся окне задаем название агента, а также наш секретный ключ.
Возвращаемся на вкладку *Import configs list*, жмём на кнопку *Create new import*, в открывшемся окне выбираем *New with empty config draft*.
Задаем название нашему импорту и выбираем что импорт будет осуществляться средствами API.
 В списке появится наша конфигурация.
Далее нам необходимо активировать нашего агента.
Далее переходим в раздел *Search Box* и жмём *Activate*.
Перед уходом мы возьмём с собой еще и index id, он находится в URL. Копируем и идём дальше.
Заходим в настройки модуля, ставим галочку что хотим авторизоваться, в index id вставляеем скопированный id из пункта 10, а в поле secret вставляем наш ключ из пункта 4.
  1. Всё, жмем подтвердить и авторизация готова.

Если у вас уже есть индекс то вам достаточно проделать пункт 11.

Настройка модуля

После того как вы зарегистрировались или авторизовались перед вам откроются настройки модуля.

Настройки индекса

Настройка индекса

В первой вкладке вы можете заменить свой секрет и index id, а также отключить индексацию сайта.
Если вы выключите индексацию, то ничего не попадёт в индекс, не важно что настроите дальше, это глобальный запрет\разрешение на отсылку данных.

Настройки контента

Данная вкладка отвечает за то, какие типы содержимого можно индексировать, а также что именно от них попадёт в индекс.

Настройки очень просты. Для каждого типа содержимого на сайте вы можете задать используя токены следующие значения:

  • Блокировка на индексацию. Если поставить галочку то материалы данного типа содержимого не попадут в индекс, никак, вообще. Старые, что попали до блокировки, останутся в индексе неизменными, но не будут обновляться.
  • Заголовок содержимого — тут я думаю всё ясно.
  • Содержимое (body) — тут нужно указать токен с основным содержанием ноды, т.е. с текстовой частью.
  • Общее содержимое (summary content) — это совокупность всех конентентных данных ноды. Сюда вы должны добавить непосредственно само тело (body), а также доп поля, например: цена, теги и т.д. Но, например, картинки и файлы добавлять не стоит, они же не контент.
  • Изображение — тут нужно указать поле с изображением. Если его нету можно оставить токен по-умолчанию, либо просто оставить поле пустым. В таком случае в момент отправки данных модуль попробует найти картинку в body.
  • Теги — тут теги для материала, вроде тоже всё ясно.

Подобные настройки есть для каждого типа содержимого. При необходимости вы можете изменить их.

Стиль поиска

В этой вкладке можно настроить текст, который будет отображаться в поле поиска по-умолчанию, пока пользователь не начнет вводить свой запрос.

Также можно настроить стиль отображения самого поля. Это просто inline-css, но он обязателен, и пустым быть не должен.

Массовые операции

Последняя вкладка позволяет проделывать массовые операции с материалами, добавление\обновление или удаление их из индекса.

Тут я тоже задерживаться не буду, всё предельно понятно.

Что делать после настройки модуля

После того как вы всё настроите, после добавления\обновления и удаления содержимого на сайте, будут отсылаться соответствующие запросы (если они не запрещены во вкладке содержимого).

Если у вас есть уже содержимое, просто массово добавьте материалы в индекс и посмотрите что получиться. Если всё сделали верно, то в админке indexisto в разделе Index Explorer должны появиться данные.

Данные в индексе

Теперь добавьте блок Indexisto на страничку и проверьте, у вас должно искать по проиндексированным материалам. На этом всё.

Что можно сделать после настройки

Ну во-первых вы можете на официальном сайте настроить оформление поиска и прочие примочки, например дележку по типам содержимого.

Делим в выдаче контент по типу содержимого.

Изначально в выдаче у вас будут все материалы идти скопом в одном разделе, но indexisto позволяет нам поделить их на разделы. Вся работе уже сделано на уровне модуля, вам лишь нужно:

  1. Зайти в настройки indexisto -> Search Box -> Widgets.
  2. Нажимаем Add new widget.
  3. Указываем название (на англ.), справа жмём на глубос, в поле RU пишем русское название, а в разделе: Select types for the query вы выбираете тип содержимого который будет находиться в этой группе.

Вот как у меня сделан раздел “Блог”:

Виджет блога

То же самое я проделал с комментариями, в резлуьтате чего теперь у меня они логически разделены в выдаче.

Результат

P.s.

Модуль находится в разработке, стабильная версия появится не раньше января 2014 года.

От этого поста мы хотим услышать предложения\пожелания к модулю, а также самому сервису indexisto, сообщайте обо всех найденных ошибках и путях их воспроизведения. Буду фиксить по мере возможности.

Drupal
Drupal 7
Поиск

Комментарии

NIK   пт, 20/12/2013 - 20:10

Где вообще можно найти нормальные темы для админки, на drupal.org вообще с темами туго...

Niklan   пт, 20/12/2013 - 21:32

Меня стандартная устраивает на все 100. А так, на том же орге, в гугле. Темы для админки есть.

Алексанр   пн, 13/01/2014 - 14:52

На моем сайте после установки модуля и переходе в настройки такая ошибка появляется: Fatal error: Call to undefined function drupal_random_key() in /home/xxx/site.ru/www/sites/all/modules/indexisto/indexisto.admin.inc on line 333

Подсажешь, что это значит? =)

Благодарю!

Niklan   пн, 13/01/2014 - 15:13

drupal_random_key() -- в модуле используется для генерации "секретного ключа" - это поле под E-Mail. Он генерируется стандартным друполовским функционалом (вышеуказанной функцией), которая есть даже в Drupal 6. Почему вылетает такой еррор? Функции такой нету в вашей инсталяции друпала. Обновите ядро, возможно какие-то файлы не догрузились.

В принципе файл, в котором находится данная функция отвечает за загрузку друпала, маловероятно что он отсутствует. Просто обновите ядро, возможно поможет. Если нет, пишите версию Drupal и какие модули в комплекте, не хукалось ли ядро и т.д.

Александр   пн, 13/01/2014 - 15:21

Благодарю! =)

Ядро версии 7.17, сейчас обновлюсь и отпишу, что вышло =)

Александр   пн, 13/01/2014 - 16:17

Обновился до версии 7.25 и модуль заработал! Благодарю! =)

Владимир   пт, 24/01/2014 - 01:00

Очень многообещающий функционал!

Уже начал тестировать

А как насчёт масштабирования для мобильных устройств?
 

Niklan   пт, 24/01/2014 - 11:22

Оно выполнено на стороне кода Indexisto. Проще говоря, оно из коробки.

Вы можете зайти к ним и посмотреть как демо выглядит на вашем телефоне, также будет выглядить и когда вы встроите на свой сайт. Если же вы сделаете своё оформление, то тут уже конечно придется самому учитывать моменты под мобильные устройства и планшеты.

Владимир   пт, 24/01/2014 - 22:12

Да, всё очень прилично, хотя окошко с результатами немного не вписывается в телефон
зато поиск работает с опережением, в отличие от гугловского

я что-то не заметил переключение упорядочивания - по умолчанию стоит по релевантности
а если скажем по дате - где это выставляется?

и ещё - как сделать чтобы после поиска набранные слова автоматически убирались?

да, вот мой сайт, если что:
http://noty-naputi.info

сейчас ищу примочку чтобы листать ноды вперед-назад по заголовкам как в Глоссарии (не по ID)
если что найдётся, буду благодарен
 

Niklan   пт, 24/01/2014 - 22:44

Фасеты, ранжиование и т.д. настраиваются в админке indexisto, все необходимые данные модуль предает.

и ещё - как сделать чтобы после поиска набранные слова автоматически убирались?

Не знаю, скорее всего это не возможно, но если и возможно то на стороне опять же, самого indexisto.

Я думаю вам лучше обратиться уже непосредственно к ним, они помогут настроить. Со стороны модуля я это делать не могу. А фасеты в их админке не настраивал, поэтому тоже помочь не могу.

Владимир   пт, 24/01/2014 - 22:47

Как попасть на автоматически сгенерированный акаунт?
логин понятно - это емейл
а пароль?
 

Niklan   пт, 24/01/2014 - 22:48

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

Владимир   чт, 06/02/2014 - 21:43

Спасибо. В принципе, всё работает очень даже хорошо. Уже связывался с производителями насчёт деталей - должен заметить, что сервиз у них тоже прекрасный. Хоть по чату, хоть по емейлу.

Большое спасибо за эту тему на блоге!
 

Гость   вс, 15/06/2014 - 21:43

Делаю как описано.

В тестовой форме (на сайте индексисто под потолком) все ищет отлично.

В форме на сайте нифига не ищет. 

Какая может быть причина?

Niklan   вс, 15/06/2014 - 21:45

Проверьте -dev версию модуля. Там одна ошибка исправлена, вполне вероятно исправит проблему.  Отпишитесь, помогло или нет.
 

Гость   чт, 19/06/2014 - 14:42

сделал через верхнюю опцию (регисррация) с дев модулем - работает ок.

Дмитрий   пт, 08/08/2014 - 21:46

Сервис помер? Скрипты и админка отдаёт 502 ошибку?

Гость   ср, 31/12/2014 - 01:09

А что, сервис Indexisto загнулся? Что-то ни чего неработает.