Документация

This page is also available in English.

  1. Установка плагина
  2. Начальная настройка
  3. Использование плагина
  4. Расширенные функции
  5. Описание API

1 Установка плагина

Для установки бесплатной версии плагина воспользуйтесь репозитарием WordPress. Для этого перейдите в закладку "Плагины / Добавить новый" панели управления WordPress Вашего сайта и в строке поиска введите фразу "wp fulltext search". Нажмите Enter. Первым в списке результатов должен быть плагин "WP FullText Search".

wp fulltext search installation

Нажмите кнопку "Установить" в его виджете и ждите, пока плагин скачается и автоматически установится. Через несколько мгновений система спросит о необходимости активации плагина. Ответьте утвердительно или перейдите по ссылке "Активировать плагин".

WP FullText Search install

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

Если Вы планируете использовать бесплатную ограниченную версию плагина, то скачайте её из репозитария WordPress по этой ссылке.  Распакуйте zip-архив в папку /wp-content/plugins/ на Вашем хостинге. После чего перейдите на страницу "Плагины" в панели управления Вашего сайта и активируйте плагин вручную.

Действия по распаковке и активации полностью аналогичны для платной версии плагина, которую Вы можете скачать в своём личном кабинете на сайте https://fulltextsearch.org/ сразу после оплаты.

Поздравляем! Плагин WP FullText Search установлен на Вашем сайте.

 

2 Начальная настройка

Сразу после установки плагин автоматически создаёт все необходимые файлы и таблицы БД. Однако, если плагин установлен впервые, ему необходимо автоматически создать поисковый индекс на основе ваших имеющихся публикаций. Нет повода для опасений - эта операция не изменяет Ваши данные.

Для создания первичного индекса просто войдите на страницу настроек плагина через меню "Настройки / WP FullText Search", индексирование начнётся автоматически. Лучше дождаться окончания индексирования, так как эта процедура сильно нагружает сервер и навигация по панели администрирования WordPress в это время может быть затруднена.

После окончания индексирования окно статуса должно выглядеть следующим образом

fulltext index status

 

3 Использование плагина

Плагин подменяет стандартную функцию текстового поиска WordPress на свою так, чтобы вместо перебора использовался созданный поисковый индекс. Поэтому для использования плагина больше не нужно ничего менять. Новые записи будут автоматически добавлены в поисковый индекс. Изменения существующих записей также приведут к обновлению индекса для этих записей.

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

 

4 Расширенные функции

4.1 Кластерная система поиска

Все данные в поисковом индексе WP FullText Search разбиты на виртуальные кластеры. Для каждой записи (post) движка WordPress в кластерах есть соответствующий блок данных. Каждому кластеру приписывается весовой коэффициент, который используется как множитель при подсчёте релевантности в результатах поиска.

Вы можете настраивать весовые коэффициенты на странице "Основные настройки" плагина.

По умолчанию в индексе имеется только два кластера - post_title (в котором хранятся индексированные заголовки записей) и post_content (в котором хранится индексированное содержимое записей, лишённое html-тэгов). Таким образом, при настройках по умолчанию плагин находит практически те же самые записи, что и стандартный поиск WordPress. Имена кластеров (post_title, post_content) также называются "токенами".

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

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

4.2 Добавление post meta data в поисковый индекс

Рассмотрим использование плагина WP FullText Search на воображаемом примере.

Предположим, у нас есть записи типа "employee", хранящие информацию о работниках в дополнительных мета-полях. (К слову, для создания специальных типов записей WP мы рекомендуем использовать бесплатные плагины ACF Advanced Custom Fields и Custom Post Type UI). К примеру, поля могут быть такими:

  • address = "Москва, ул. Каретная, 21" // адрес места жительства
  • phone = "+79271234678" // номер телефона работника
  • name = "Сидоров Иван Петрович" // полное имя
  • function = "Менеджер" // должность, которую занимает работник

(Мы могли бы использовать огромное количество других полей, но нам для демонстрации будет достаточно этих). Сохраним эту запись с заголовком post_title = "Сидоров И.П." и пустым post_content.

wp fulltext search employeer data

Итак, мы хотим иметь возможность искать работников по содержимому этих полей, используя стандартные функции WP_Query или get_posts(). Если мы не планируем присваивать каждому полю свой весовой коэффициент, то можно просто объединить данные в одну строку и сохранить в общем кластере с именем, например, employee_data.

Вот как будет выглядеть код фильтра для этого случая (его нужно поместить в файл functions.php Вашей текущей темы).

/**
 * Этот сниппет добавляет метаданные записей "employee" в поисковый индекс
 */
add_filter('wpfts_index_post', function($index, $post){
	
	global $wpdb;
	
	// Главные токены
	/*
	 * Этот кусок кода умышленно закомментирован, чтобы показать уже выполненные действия,
	 * которые нет нужды повторять ещё раз.
	 * 
	$index['post_title'] = $post->post_title;
	$index['post_content'] = strip_tags($post->post_content);
	*/
 
	if ($post->post_type == 'employee') {
		// Добавляем новый токен только для записей типа "employee"
		$data = array();
		$data[] = get_post_meta($post->ID, 'address', true);
		$data[] = get_post_meta($post->ID, 'phone', true);
		$data[] = get_post_meta($post->ID, 'name', true);
		$data[] = get_post_meta($post->ID, 'function', true);
		
		$index['employee_data'] = implode(' ', $data);
	}
	
	return $index;
}, 3, 2);

4.3 Тестирование фильтра

После добавления или изменения фильтра необходимо протестировать его работу. Для этого на странице настроек плагина WP FullText Search есть специальный раздел "Песочница".

E20151115-022108[1]

Введём в поле "ID записи" идентификатор какой-нибудь записи типа "employee". После нажатия верхней кнопки "Тестировать" под формой должна появиться таблица со списком кластеров данного поста, сформированных фильтром wpfts_index_post.

wordpress search by meta data

Теперь все новые и изменённые записи типа "employee" будут автоматически заноситься в индекс уже с данными из указанных meta-полей. Мы также сможем установить весовой коэффициент для созданного кластера employee_data на странице "Основные настройки".

Однако уже существующие записи типа "employee" не обновятся в индексе автоматически и для них нужно выполнить перестроение индекса. Нажмите на кнопку "Перестроить индекс" на странице "Основные настройки". Как и в случае с начальным индексированием, придётся немного подождать до полного обновления индекса. Эту операцию нужно делать каждый раз, когда Вы меняете фильтр wpfts_index_post, чтобы изменения алгоритма отразились на проиндексированных ранее записях.

4.4 Тестирование поиска

С помощью страницы "Песочница" Вы можете протестировать поиск. В разделе "Тестер поиска" необходимо ввести фразу в поле "Запрос" и нажать кнопку "Тестировать". Результат работы алгоритма будет отображён в таблице ниже. Можно использовать дополнительные опции - ограничить тип или статус искомых записей, отключить кэш MySQL (это бывает полезно для проверки быстродействия алгоритма), а также полностью отключить плагин WP FullText Search на время тестового поиска (например, для сравнения алгоритма плагина со стандартным алгоритмом текстового поиска WordPress).

Как видно на скриншоте выше, алгоритм отыскал не только нашего тестового работника по подстроке "петрович", которая содержится только в метатэге, но и страницу, которую Вы сейчас читаете, потому что в ней также содержится эта подстрока. При указании точного типа поста ("employee") будет найдена только нужная запись.

 

5 Описание API