Умный поиск элементов - отличная замена стандартному битрикс поиску по сайту. Битрикс поиск


Настройка поиска в Битриксе

Обухов Константин

16.02.2012

В связи с выходом в Маркетплейс Битрикса нашего нового модуля "Удобный поиск", мы решили дополнительно осветить вопрос настройки поиска, который, как оказалось, для многих владельцев сайтов остаётся тредноразрешимым.

Итак, приступим!

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

Перед началом работы, необходимо проверить настройки модуля "Поиск" (Администрирование - Настройка - Настройки модулей - Поиск).

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

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

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

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

Чтобы искались слова с тире (1с-битрикс), необходимо удалить знак тире из этой настройки.

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

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

-------------------------------- Теперь перейдём к настройкам Информационных Блоков, которые будут участвовать в поиске.

Включение инфоблоков в поиск Чтобы содержимое инфоблоков (Новости, товары, статьи и прочее) были в поисковых результатах сайта, необходимо в настройках этих инфоблоков (Администрирование - Контент - Типы информационных блоков - Выбрать нужный тип - Выбрать инфоблок) поставить 2 галочки:

После чего, надо произвести переиндексацию (полную) сайта (Администрирование - Настройки - Поиск - Переиндексация - Снять галочку "Только изменения").

И не забывайте после этого сбрасывать кэш (Администрирование - Настройки - Настройки продукта - Автокеширование - Сбросить кэш).

-------------------------- Мы рассмотрели основные настройки модуля. Теперь рассмотрим настройки самой компоненты поиска.

Настройка компоненты поиска 1. Если у Вас стоит готовый сайт (типовое решение), то скорее всего, поисковая страница уже существует. Как правило, она находится в папке /search/. Если нет, то создайте такую страницу. Затем в визуальном редакторе перетащите на неё компоненты "Стандартная страница поиска" и "Удобный поиск" (если у Вас установлен модуль, то вы увидете синенькую иконку нашей компененты).

Из всех настроек компоненты подробно рассмотрим следующие:

1) Показывать подсказку с поисковыми фразами - если у Вас есть такая настройка модуля, то опция полезная для быстрого выбора поисковой фразы. Работает хорошо в Интернет-Магазинах. Вообще, мы рекомендуем устанавливать, в качестве поисковой строки, компонент "Поиск по заголовкам" на всех страницах сайта. За исключением случаев, когда львиная доля поискового контента находится не в заголовках товаров, новостей и т.п., а в свойствах и блоках элементов.

2) Автоопределение раскладки - должна быть включена. Люди привыкли, что Яндекс разбирает запросы независимо от раскладки.

3) Искать без учета морфологии (при отсутствии результатов) - спасение для тех случаев, когда морфологический поиск не помогает. Обязательно включите!  

4) Ранжировать по заголовкам - см. п.1

5) Ограничение области поиска - еще одна настройка, позволяющая не показывать в результатах ненужные Вам инфоблоки и другие части сайта.

----------------------------- Ещё некоторые особенности поиска.

Поиск по свойствам Если Вы хотите, чтобы поиск производился не только по описанию товара и его названию, а еще и по значению его свойств, то у каждого такого свойства надо включить опцию "Значение участвует в поиске". Находится она в Рабочий стол - Контент - Информ. блоки - Типы информ. блоков - [нужный Вам инфоблок] - вкладка Свойства - кнопка с тремя точками напротив нужного свойства. Открывается окно редактирования свойства:

Переиндексация сайта Если Вы включаете какой-то инфоблок или его свойство для поиска, Вам необходимо провести полную переиндексацию поиска: Настройки - Поиск - Переиндексация.

Ещё раз обращаим внимание, что галочка "Переиндексировать только измененные" должна быть снята.

Социальный поиск Если Вы уже используете на сайте замечательные возможности рейтингования материалов (Рейтинг, кнопка "Мне нравится"), то поиск можно настроить так, чтобы сначала выводились результаты с наивысшим значением рейтинга. Эта опция включается в настройках модуля "Поиск".

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

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

Хорошо, если на сайте мало контента. А если у Вас Интернет-Магазин с сотнями товаров, статьями, акциями, новостями и прочим, что делать?.. Можно ли выводить результаты поиска не одним списком, а с разбивкой по категориям. И, желательно, чтобы товары шли первыми?

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

Просмотров: 24653

www.infospice.ru

Как настроить модуль "Поиск" Битрикс

Условия поиска задаются в настройках модуля Поиск (Настройки > Настройки продукта > Настройки модулей > Поиск).  Большая часть настроек модуля не требует комментариев.
Закладка Индексация

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

Закладка Морфология

На закладке Морфологический поиск можно разрешить или запретить морфологический поиск на сайте и настроить его параметры.

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

При морфологическом анализе модуль Поиск разбивает предложения на слова, используя стандартные символы-разделители (пробел, точка, запятая и т.п.). Однако, существуют символы, которые, не будучи буквами, все же являются частями слов (например, дефисы). Чтобы в подобных случаях разбивка слов не выполнялась, в поле Cимволы, по которым не производится разделение документа на слова укажите символы, которые морфологический анализатор должен рассматривать как части слов. По умолчанию там стоит дефис.

При желании можно отложить выполнение морфологического анализа на агентов с помощью соответствующей опции.

Примечание: морфологический поиск поддерживает работу со всеми языками, установленными в системе.

Начиная с версии модуля 14.0.0, продукт интегрирован с внешней поисковой системой Sphinx, которая обеспечивает быстрый и качественный полнотекстовый поиск. Теперь в настройках модуля (см. поле Полнотекстовый поиск с помощью) вы можете выбирать как должен осуществляться поиск: с помощью внутренней (Bitrix) или внешней (Sphinx) поисковой системы.

Если вы выбрали систему Sphinx, то необходимо указать строку подключения к Sphinx и задать идентификатор индекса:

Закладка Поиск

На закладке Поиск задаются собственно параметры поиска.

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

Ранжирование (англ. ranking) – это процесс выстраивания найденных по запросу пользователя страниц в порядке наибольшего соответствия искомому запросу.

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

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

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

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

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

Закладка Статистика

На закладке Статистика задаются параметры хранения статистики поисковых фраз и запросов.

Статистика - это инструмент для сбора и анализа информации с целью дальнейшей корректировки контента сайта под типовые поисковые запросы. Источник: Bitrix

abraxabra.ru

Умный поиск элементов - отличная замена стандартному битрикс поиску по сайту Битрикс модули

Продолжаем  совершенствовать и оптимизировать интернет-магазины на 1С-Битрикс с помощью нового модуля битрикс поиска по сайту  Умный поиск элементов

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

Модуль состоит из трех компонентов: 1) Поиск по заголовкам 2) Результаты поиска 3) Результаты поиска (каталог)

Работа компонента "Поиск по заголовкам", выглядит все очень красиво и аккуратно, встроить его можно в любое место сайта, найдет все, что есть в заданном инфоблоке по ключевому слову, при этом модуль не использует БД, ничего в ней не хранит, не расходует ее пространство, используется свой внутренний алгоритм.

А вот как работает и что находит стандартный поиск Битрикс, я лично проверял у клиентов, часть товаров вообще не находит, часть продаж уже в пролете, а это никуда не годится.

В этой версии Умный поиск элементов v1.1.0 было сделано: [+] добавлен вывод цен, конвертация валют, вывод скидок на товар [+] добавлен выбор, вывод и ресайз изображений (размер можно задавать двумя способами: 64x64 или 64) [+] добавлен индикатор аякс-поиска

В лаборатории разработчика выглядит это вот так

Как видим, выводятся цены, скидка на товар, картинки все уменьшаются под заданный размер, ключевые слова подсвечиваются.

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

Наглядно можно увидеть разницу со стандартным поиском, о чем я писал выше, сколько в стандартном поиске таблиц в БД и строк:

После установки моего модуля, встроенный в Битрикс модуль поиска можно удалять, он просто будет не нужен и тем самым вы освободите место в БД, облегчите ее.

Хочу сказать, что этот модуль подойдет не всем, модуль ищет только элементы инфоблока, по структуре сайта не ищет. Часто в интернет-магазинах делается поиск только по товарам, текстовых страниц немного (Доставка, Оплата, Контакты), здесь нет смысла делать поиск по структуре, держать стандартный модуль поиска также становится ненужным.

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

tuning-soft.ru

Как настроить фасетный поиск в каталоге товара Битрикс

Начиная с версии 15.0.1 модуля Информационные блоки, добавлен фасетный (т.е. предопределенный) поиск по товарам торгового каталога. Система заранее формирует фасеты (всевозможные комбинации пересечения свойств товаров) и при выполнении поискового запроса сразу выдается результат - эти готовые фасеты. Механизм фасетного поиска встроен в информационные блоки и интегрирован с компонентом Умный фильтр. Кроме того, создание фасетных индексов значительно ускоряет не только поиск товаров, но и работу всего каталога в целом.

Фасетный индекс - это готовый поисковый набор товаров по некоторому значению свойства.

Чтобы иметь возможность использовать фасетный поиск по товарам магазина, в первую очередь в каталоге должно быть создано хотя бы одно отображаемое в умном фильтре свойство:

После чего необходимо создать фасетные индексы. Для этого служит специальная страница Фасетные индексы инфоблоков (Контент > Инфоблоки > Фасетные индексы):

С помощью пункта Создать в меню действий конкретного каталога или по кнопке Создать все, расположенной на контекстной панели, открывается форма запуска процесса создания индексов:

Запуск процесса создания индексов осуществляется по кнопке Начать.

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

По окончании индексации будет выведено соответствующее сообщение:

Созданные фасетные индексы хранятся в базе данных, а в таблице для каталогов товаров в колонке Состояние отображается Работает:

При добавлении новых (редактировании существующих) товаров пересоздание индекса будет выполняться автоматически. При добавлении/редактировании разделов каталога иногда может потребоваться пересоздание фасетного индекса вручную.

Источник: Bitrix

abraxabra.ru

1С-Битрикс. Добавляем в морфологический индекс поиска возможность искать по части слова

Наверняка, многие знают, что в битриксе есть морфологический поиск. И вроде бы он даже худо-бедно работает. Но если мы торгуем товарами, и хотим, чтобы поиск искал и по части чего-то специфического, например, артикула товара (пример: артикул «Р6543», подстрокой будет «6543»), то ничего из этого не выйдет. Поиск тупо ничего не найдёт.

В этой заметке покажу способ, как можно эту проблему решить.

Суть

В момент индексации элемента будем добавлять в таблицу b_search_content_stem наши части слов. То есть, в нашем случае, для товара с артикулом «Р6543» мы добавим «6543» в поисковый индекс. Запросы «654» и «65» так же будут отдавать товар с артикулом «Р6543».

Обработчики — наше всё

Как обычно, решать мы будем обработчиками. Оффтоп: иногда вижу проекты вообще без файлов init.php и своих кастомных модулей. Ребята, как вам удаётся без этого сайты собирать?

Будем слушать 3 события: BeforeIndex, OnBeforeIndexUpdate и OnAfterIndexAdd.

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

На события OnBeforeIndexUpdate и OnAfterIndexAdd запишем в таблицу b_search_content_stem то, что нам нужно. API для этого нет, так что будем писать чистые SQL-запросы. Проверял на MySQL с InnoDB таблицей. На остальных не факт, что будет корректно работать

Код обработчика

Сохраняем код в файле /local/php_interface/classes/handlers/search/stemming.php

В свойстве $allowedIblockId класса необходимо указать ID инфоблоков, для которых нужен функционал.

<?php [email protected] namespace Olegpro\Classes\Handlers\Search; use Bitrix\Main\Loader; use Bitrix\Main\Application; use Bitrix\Main\DB\SqlQueryException; class Stemming { @var protected static $allowedIblockId = array( 1 ); @var private static $element; @param @return public static function beforeIndex($arFields) { static $allowedIblockId = null; if ($allowedIblockId === null) { $allowedIblockId = array_flip(self::$allowedIblockId); } if ( $arFields['MODULE_ID'] == 'iblock' && isset($allowedIblockId[$arFields['PARAM2']]) && strlen($arFields['ITEM_ID']) > 0 && substr($arFields['ITEM_ID'], 0, 1) != 'S' && Loader::includeModule('iblock') ) { if ($obElement = \CIBlockElement::GetList( array(), array('ID' => $arFields['ITEM_ID']), false, false, array() )->GetNextElement() ) { $element = $obElement->GetFields(); $element['PROPERTIES'] = $obElement->GetProperties(); self::$element = $element; } } return $arFields; } @param @param public static function beforeIndexUpdate($indexId, $arFields) { if ( isset(self::$element) && is_array(self::$element) && isset(self::$element['PROPERTIES']['ARTICLE']) && strlen(trim(self::$element['PROPERTIES']['ARTICLE']['VALUE'])) && preg_match('~^.*?([0-9.,]+).*?$~', trim(self::$element['PROPERTIES']['ARTICLE']['VALUE']), $m) ) { $word = ToUpper($m[1]); $stemId = \CSearch::RegisterStem($word); if ($stemId > 0) { $connection = Application::getConnection(); $sqlHelper = $connection->getSqlHelper(); try { $thereIs = $connection->queryScalar( sprintf( "SELECT 1 FROM b_search_content_stem WHERE SEARCH_CONTENT_ID = '%s' AND STEM = '%s'", $sqlHelper->forSql($indexId), \CSearch::RegisterStem($word) ) ); if ($thereIs === null) { $connection->query(sprintf( "INSERT IGNORE INTO `b_search_content_stem` (`SEARCH_CONTENT_ID`, `LANGUAGE_ID`, `STEM`, `TF`, `PS`) VALUES ('%s', '%s', '%s', '%s', '%s')", $sqlHelper->forSql($indexId), 'ru', \CSearch::RegisterStem($word), number_format(0.2, 4, ".", ""), number_format(1, 4, ".", "") )); } } catch (SqlQueryException $e) { AddMessage2Log(sprintf("\\%s:\n%s", __METHOD__, $e->getMessage())); } } } self::$element = null; } }

Регистрируем обработчики и добавляем класс в автозагрузку

Добавить в /local/php_interface/init.php

<?php \Bitrix\Main\EventManager::getInstance()->addEventHandler('search', 'BeforeIndex', array('\Olegpro\Classes\Handlers\Search\Stemming', 'beforeIndex') ); \Bitrix\Main\EventManager::getInstance()->addEventHandler('search', 'OnBeforeIndexUpdate', array('\Olegpro\Classes\Handlers\Search\Stemming', 'beforeIndexUpdate') ); \Bitrix\Main\EventManager::getInstance()->addEventHandler('search', 'OnAfterIndexAdd', array('\Olegpro\Classes\Handlers\Search\Stemming', 'beforeIndexUpdate') ); \Bitrix\Main\Loader::registerAutoLoadClasses(null, array( '\Olegpro\Classes\Handlers\Search\Stemming' => '/local/php_interface/classes/handlers/search/stemming.php', ));

На этом всё. Осталось только запустить полную переиндексацию и теперь можно не тратить жизнь на вписывание в поиск артикулов полностью.

P.S.

Для своих частных случаев код придётся, конечно, поправить под себя.

www.olegpro.ru

TS Умный поиск по инфоблокам

Основные возможности системы поиска битрикс

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

*** - Если задано ограничение на результаты поиска в компоненте Поиск по заголовкам и заданы категории поиска, то результат будет подстраиваться под заданное ограничение, например: всего 30 товаров в результатах задано в настройках + 3 категории поиска, компонент будет стараться в каждой категории находить максимальное количество значений по формуле 30 / 3 = 10, т.е. в каждой категории будет максимум 10 результатов, но если в первой категории было всего 2 результата, то во второй категории компонент может вывести (10 - 2) + 10 = 18 элементов, а в третьей будет 10, итого всего 30 элементов. Пока сделана разбивка результатов поиска по категориям только в одном компоненте Поиск по заголовкам, чуть позже сделаем во втором.

Мультиязычность Битрикс

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

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

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

jQuery плагины

Для шаблона компонента Поиск по заголовкам написан jQuery-плагин: $.fn.apiSearchTitle

Он подключается автоматически в шаблоне компонента в файле script.js У плагина есть настройки, пока они заданы в самом шаблоне. При копировании шаблона компонента вы максимально сможете изменять плагин под свои задачи.

Системные требования

Модуль я постарался сделать максимально совместимым со старыми редакциями, протестирован на редакциях:

Версия jQuery 1.8.3 + (либо на сайте, либо в настройках модуля включить) Версия php 5.3 +

Обратите внимание!

1) Поиск ищет только по элементам инфоблока.

2) У модуля хитрая логика поиска, если вы введете две буквы, например по, то ничего конкретного скорее всего не найдете, если ищете слово почетный, то найдете абсолютно все элементы с этим словом. Также будет искать по вариациям: почетная грамота, грамота почетная, грамоты, почетный и т.д.

3) Если не заработало или не появляются всплывающие результаты поиска, значит надо в настройках компонента попробовать подключить jQuery, если опять не заработали, значит какой-то конфликт библиотек jQuery, надо будет разбираться с проблемой, из коробки все работает.

4) Чем больше свойств вы укажите для поиска, тем медленнее он будет работать, но чаще всего это Название товара и свойство Артикул. Максимум 30 свойств можно выбрать, если ничего не выбрано, то поиск ищет только в названиях элементов.

5) Система поиска битрикс протестирована в каталоге более 60 000 шт. товаров, по названию и артикулу ищет быстро, если у вас работает очень медленно, рекомендую задуматься над оптимизацией своего сайта, либо над сменой хостинга на более мощный, либо удалить модуль и пользоваться стандартным поиском Битрикс.

tuning-soft.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта