Pdoresources where примеры: Примеры использования | Документация | Зона разработки

Примеры использования | Документация | Зона разработки

Во всех примерах используется библиотека pdoTools, которая, по моему скромному мнению, является обязательным дополнением.

1. Вывод списка ресурсов с сортировкой по количеству просмотров


[[!pdoResources?
    &tpl=`article.tpl`
    &loadModels=`sitestatistics`
    &leftJoin=`{
        "Statistics": {
            "class": "PageStatistics",
            "on": "modResource.id = Statistics.rid"
        }
    }`
    &select=`{
        "modResource": "*",
        "Statistics": "IFNULL(SUM(views),0) as views, COUNT(DISTINCT user_key) as users"
    }`
    &groupby=`modResource.id`
    &sortby=`views` // `users` для сортировки по посещениям
]] 

Соответственно в чанке можно использовать плейсхолдеры [[+views]] и [[+users]]. Выглядеть это будет приблизительно так

2.

Тоже самое, только для mFilter


[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &loadModels=`sitestatistics`
    &leftJoin=`{
        "Statistics":{"class":"PageStatistics","on":"msProduct.id=Statistics.rid"}
    }`
    &select=`{
        "msProduct": "*",
        "Statistics": "IFNULL(SUM(views),0) as views, COUNT(DISTINCT user_key) as users"
    }`
    &groupby=`msProduct.id`
    &sortby=`views`
]] 

3. Пример вывода ресурсов, у которых referer содержит строку «google.ru», т.е. на которые заходили с гугла.


[[!pdoResources?
    &parents=`0`
    &tpl=`@INLINE <p>Заголовок "[[+pagetitle]]". Создан {{+createdon:date=`%d.%m.%Y`}}</p>`
    &loadModels=`sitestatistics`
    &where=`["modResource.id IN (SELECT DISTINCT Statistics.rid FROM `modx_stat_page_statistics` AS `Statistics` INNER JOIN `modx_stat_online_users` `StatUser` ON StatUser.
user_key = Statistics.user_key and StatUser.referer LIKE '%google.ru%')"]` ]]

4. Пример вывода недавно просмотренных страниц текущего пользователя.


[[!pdoResources?
    &parents=`0`
    &tpl=`@INLINE <p>[[+pagetitle]].</p>`
    &loadModels=`sitestatistics`
    &innerJoin=`{
        "Statistics":{"class":"PageStatistics","on":"modResource.id=Statistics.rid"}
    }`
    &select=`DISTINCT modResource.pagetitle`
    &where=`{"Statistics.user_key": "[[+sitestatistics.userKey]]"}`
    &sortby=`Statistics.date`
    &limit=`5`
]]

Можно ограничить периодом. Для этого нужно немного изменить условие


//1. Просмотренные пользователем ресурсы за текущий день
&where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.date = CURDATE()"]`
//2. Просмотренные пользователем ресурсы за конкретный день
&where=`["Statistics.
user_key = '[[+sitestatistics.userKey]]' AND Statistics.date = '2016-03-05'"]` //3. Просмотренные пользователем ресурсы за январь &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.month = '2016-01'"]` //4. Просмотренные пользователем ресурсы за год &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.year = 2016"]` //5. Просмотренные пользователем ресурсы за период &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.date BETWEEN '2016-01-01' and '2016-03-31' "]` //6. Просмотренные пользователем ресурсы за последние 7 дней &where=`["Statistics.user_key = '[[+sitestatistics.userKey]]' AND Statistics.date >= DATE_SUB(CURDATE(),INTERVAL 7 DAY)"]`

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


[[!pdoUsers?
    &tpl=`@INLINE <p>[[+username]] - [[+views]].</p>`
    &loadModels=`sitestatistics`
    &innerJoin=`{
        "UserStat":{"class":"UserStatistics","on":"modUser. id=UserStat.uid"},
        "PageStat":{"class":"PageStatistics","on":"UserStat.user_key=PageStat.user_key"}
    }`
    &select=`{
        "PageStat": "SUM(PageStat.views) as views"
    }`
    &groupby=`UserStat.uid`
    &where=`["PageStat.date BETWEEN '2016-01-01' and '2016-01-31'"]`
]]

Если нужно вывести статистику только для текущего пользователя, то указываем его в where


&where=`["UserStat.uid = [[+modx.user.id]] AND PageStat.date BETWEEN '2016-01-01' and '2016-01-31'"]`

pdoResources — сниппет пакета pdoTools

pdoResources — Сниппет предназначен для вывода ресурсов по заданным параметрам.

Оглавление

  • Примеры
  • Дополнительная информация
  • pdoResources — сниппет предназначен для вывода списка ресурсов. Является продвинутой заменой для getResources: обладает всеми его возможностями, но лишен недостатков.

    Умеет правильно сортировать ТВ параметры, присоединять таблицы при выборке, включать и исключать категории из разных контекстов и еще много чего.

    Параметры

    Параметры сниппета pdoResources.

    Параметры выборки ресурсов

    Эти параметры определяют, какие ресурсы появятся в генерируемом списке.

    &parentsТекущий ресурсСписок родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
    &depth10Глубина поиска дочерних ресурсов от родителя.
    &resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
    &context
    Ограничение выборки по контексту ресурсов.
    &whereМассив дополнительных параметров выборки, закодированный в JSON.
    &showHidden1Показывать ресурсы, скрытые в меню.
    &showUnpublished0Показывать неопубликованные ресурсы.
    &showDeleted0Показывать удалённые ресурсы.
    &hideContainers0Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1».
    &select0Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {"modResource":"id,pagetitle,content"}.
    &sortbypagetitleЛюбое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей, например {"tvname":"ASC", "pagetitle":"DESC"}. Для случайно сортировки укажите «RAND ()»
    &sortdirDESCНаправление сортировки: по убыванию или возрастанию.
    &setTotal0Отключение выборки total по умолчанию (с версии 2.11.0). Сниппет pdoPage включает его всегда.
    &limit10Ограничение количества результатов выборки. Можно использовать «0».
    &offset
    0Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit.
    &first1Номер первой итерации вывода результатов.
    &lastАвтоматически, по формуле (total + first — 1)Номер последней итерации вывода результатов.
    &loadModelsСписок компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery, msearch3`.
    &tvFilters Список фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter
    представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: &tvFilters=`filter2==one, filter1==bar%||filter1==foo`. Обратите внимание: фильтрация использует оператор LIKE и знак «%» является метасимволом. И еще: Поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ.
    &tvFiltersAndDelimiter»,»Разделитель для условий AND в параметре &tvFilters.
    &tvFiltersOrDelimiter«||»Разделитель для условий OR в параметре &tvFilters.
    tplFirst
    НазваниеПо умолчаниюОписание

    Параметры шаблонов

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

    НазваниеОписание
    &returnIdsУстановите значение «1», чтобы вернуть строку со списком id ресурсов, вместо оформленных результатов. Все указанные шаблоны игнорируются.
    &tplИмя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран.
    &tplFirstИмя чанка для первого ресурса в результатах.
    &tplLastИмя чанка для последнего ресурса в результатах.
    &tplOdd
    Имя чанка для каждого второго ресурса.
    &tplWrapperЧанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &toSeparatePlaceholders.
    &wrapIfEmpty Включает вывод чанка-обертки &tplWrapper даже если результатов нет.
    &tplCondition Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls.
    &tplOperator Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls.
    &conditionalTpls JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей.
    &outputSeparator Необязательная строка для разделения результатов работы.

    Параметры результатов

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

    НазваниеПо умолчаниюОписание
    &fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т. п.) будут вырезаны.
    &idxВы можете указать стартовый номер итерации вывода результатов.
    &totalVartotalИмя плейсхолдера для сохранения общего количества результатов. Параметр &setTotal должен быть включен.
    &includeContent0Включаем поле «content» в выборку.
    &includeTVs Список ТВ параметров для выборки, через запятую. Например: «action, time» дадут плейсхолдеры [[+tv.action]] и [[tv.time]].
    &prepareTVs«1», что означает подготовку всех ТВ, указанных в &includeTVsСписок ТВ параметров, которые нужно подготовить перед выводом.
    &processTVs Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.
    &tvPrefixtv.Префикс для ТВ параметров.
    &useWeblinkUrl Генерировать ссылку с учетом класса ресурса, включает плейсхолдер [[+link]].
    &toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
    &toSeparatePlaceholdersЕсли вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]], [[+myPl1]] и т. д.
    &showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».

    Примеры

    Простейший вывод списка дочерних ресурсов документа с идентификатором 1:

    /* modParser */
    [[pdoResources?
        &parents=`1`
        &depth=`0`
        &tpl=`ListRowTpl`
    ]]
    /* pdoParser */
    {$_modx->runSnippet('!pdoResources', [
    'parents' => 1,
    'depth' => 0,
    'tpl' => 'ListRowTpl',
    ])}

    Если используется дополнительное поле image, то вызов изменится следующим образом:

    /* modParser */
    [[pdoResources?
        &parents=`1`
        &depth=`0`
        &tpl=`ListRowTpl`
        &includeTVs=`image`
    ]]
    /* pdoParser */
    {$_modx->runSnippet('!pdoResources', [
    'parents' => 1,
    'depth' => 0,
    'tpl' => 'ListRowTpl',
    'includeTVs' => 'image',
    ])}

    В чанке ListRowTpl за это поле будет отвечать плейсхолдер [[+tv. image]].

    Дополнительная информация

    При переносе чанков с getResources, довольно распространённой ошибкой является использование модификатора strtotime, для форматирования даты.

    Дело в том, что даты ресурсов и так хранятся в виде timestamp, но конвертируются в нормальные даты из-за использования объектов modResource — так запрограммировано в его свойствах. А потом, для форматирования даты, их нужно перевести обратно в timestamp. Выходит двойная ненужная конвертация.

    pdoTools же работает напрямую с базой данных, без создания объектов и конвертации их значений, поэтому в чанк приходит timestamp, который не нужно дополнительно обрабатывать. Вы можете сразу применять модификатор date к значениям:

    [[+publishedon:date=`%d.%m.%Y`]]

    или

    [[+createdon:date=`%Y-%m-%d`]]

    Это касается работы с датами ресурсов и в других сниппетах pdoTools.

    Благодарность автору

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

    • ЮMoney (Яндекс.Деньги)

    Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

    Время работы: 0,1279 s
    Время запросов: 0,1279 s
    Количество запросов: 27
    Источник: cache

    Авторская документация по web-разработке Web in Mind | © 2019 – 2023

    Что такое pdoTools? (Часть 1)

    После создания новой установки MODX следующим шагом часто является установка ряда дополнений для добавления функциональности сайту.

    Обычный набор известен:

    • getResources для списка ваших документов
    • getPage для нумерации ваших списков
    • Wayfinder для меню сборки
    • Панировочные сухари для панировочных сухарей
    • GoogleКарта сайта для карты сайта

    Но можно заменить их все одним пакетом: pdoTools!

    Начнем с того, что может сделать pdoTools.

    9 фрагментов

    Да, я серьезно. pdoTools содержит 9 сниппетов, которые могут выполнять практически любую функциональность обычного веб-сайта. И почти все они являются заменой другим популярным сниппетам.

    pdoResources

    pdoResources заменяет getResources.

    Как и все другие сниппеты в pdoTools, он не использует объекты xPDO для представления ресурсов. Он работает напрямую с таблицами базы данных. Это делает его быстрее.

    Вам не нужно преобразовывать даты ресурсов в метки времени, прежде чем вы сможете передать их в выходной фильтр «дата». И он объединяет только нужные телевизоры, поэтому вы должны указать их в свойстве &includeTVs в виде списка, разделенного запятыми.

     [[pdoResources?
        &родители=`0`
        &includeTVs=`my_tv1,my_tv2`
        &tvPrefix=`tv.`
        &processTVs=`1`
        &includeContent=`1`
        &showLog=`1`
    ]] 

    Одной из наиболее важных функций pdoTools является &showLog свойство. Это позволяет вам проверить, насколько быстрым является фрагмент. Это медленный SQL-запрос или слишком сложный фрагмент? Свойство &showLog поможет вам разобраться.

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

     [[!pdoResources?
        &родители=`0`
        &class=`modResource`
        &leftJoin=`{
            "Родитель": {
                "класс": "модРесурс",
                "on": "modResource.parent = Parent.id"
            },
            "Сделано": {
                "класс": "modUserProfile",
                "on": "modResource.createdby = CreatedBy.internalKey"
            }
        }`
        &выбрать=`{
            "modResource": "modResource.id, modResource.pagetitle",
            "Родитель": "Parent.pagetitle как родитель",
            "CreatedBy": "CreatedBy.fullname как автор"
        }`
        &showLog=`1`
    ]] 

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

    Есть много других интересных функций, но эти самые важные.

    pdoPage

    pdoPage является заменой getPage. Есть несколько отличий от getPage:

    1. Он не показывает пустые страницы. Если у вас нет результатов на странице, или пользователь ввел не ту страницу вручную — вы будете перенаправлены на первую страницу.
    2. Имеет свойство &maxLimit , для которого по умолчанию установлено значение 100. Это гарантирует, что пользователи не смогут замедлить работу вашего сайта, установив &limit=100000 в URL-адресе. Если вы используете getPage — просто попробуйте сделать это на своем сайте.
    3. Устанавливает метатеги на предыдущую и следующую страницы для поисковых роботов в заголовке страницы.
    4. Имеет встроенную пагинацию ajax. Вот как это работает:
     <дел>
        <дел>
            [[!pdoPage?
                &родители=`0`
                &ajaxMode=`по умолчанию`
            ]]
        
    [[!+page.nav]]

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

    pdoMenu

    Этот фрагмент может заменить Wayfinder. В основном это работает так же, но немного быстрее.

    Поскольку объекты xPDO игнорируются, необходимо вручную проверять права доступа к пунктам меню со специальным свойством:

     [[!pdoMenu?
        &родители=`0`
        &checkPermissions=`список`
    ]] 

    По умолчанию все проверки разрешений отключены. Кстати, это свойство можно использовать во всех сниппетах pdoTools.

    pdoUsers

    В этом фрагменте перечислены пользователи вашего сайта. Вы можете отфильтровать их по группам и ролям:

     [[!pdoUsers?
        &groups=`Авторы`
        &sortdir=`asc`
    ]] 

    Вы можете комбинировать это с pdoPage для предоставления разбитого на страницы списка пользователей:

     [[!pdoPage?
        &element=`pdoUsers`
        &groups=`Авторы`
        &roles=`Член`
        &sortby=`идентификатор`
        &sortdir=`asc`
    ]]
    [[!+page.nav]] 

    Заполнители — это все поля из modUser и modUserProfile объекты. Вы можете увидеть их все, если просто установите пустой параметр &tpl (или не установите его вообще, если сниппет не имеет значения tpl по умолчанию).

    Пустой &tpl — еще одна общая черта всех сниппетов pdoTools.

    pdoSitemap

    pdoSitemap создает быструю карту сайта, которая не требует установки ресурса в XML, если свойство &forceXML включено (по умолчанию).

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

    Чтобы увидеть, насколько он быстр, мы можем протестировать его, отключив &forceXML и включив &showLog . На моем сайте первый запуск занимает почти 30 секунд, а второй всего 0,03:

     [[!pdoSitemap?
        &forceXML=`0`
        &showLog=`1`
    ]] 

    В моей карте сайта 6873 ресурсов.

    пдососеди

    Фрагмент для создания ссылок на предыдущую, следующую и верхнюю страницы текущего документа.

     [[!pdoСоседи?
        &sortby=`menuindex`
        &sortdirc=`описание`
    ]] 
    pdoCrumbs

    Мой вариант простого сниппета для хлебных крошек на сайте. Ничего особенного, за исключением того, что он использует ядро ​​pdoTools с быстрой обработкой фрагментов и выборкой данных.

     [[!pdoCrumbs]] 
    pdoTitle

    Этот фрагмент генерирует тег title страниц. Работает pdoCrumbs и показывает путь к текущему документу в заголовке.

     [[!pdoTitle]] / [[++site_name]] 

    Он поддерживает pdoPage по умолчанию, поэтому вы увидите количество страниц в заголовке.

     Вопросы / стр. 5 из 593 / Разделы / mysite.com 

    Поисковые роботы в восторге!

    pdoField

    И, наконец, pdoField — это сниппет, позволяющий получить любое поле из любых ресурсов. Это замена как для UltimateParent и getResourceField фрагментов.

    Например, нам нужно получить longtitle ресурса с id=15

     [[pdoField?
        &id=`15`
        &field=`длинное название`
    ]] 

    Или, если мы хотим получить pagetitle прародителя текущего документа:

     [[pdoField?
        &id=`[[*id]]`
        &field=`название страницы`
        &верхнее=`2`
    ]] 

    Заключение

    О pdoTools можно писать еще и еще, но для первой статьи этого достаточно. В следующих двух статьях я расскажу о скорости и о pdoParser.

    Важно помнить, что все сниппеты pdoTools используют одно и то же ядро ​​и большинство параметров можно использовать для всех из них.

    Вы можете использовать &showLog , чтобы увидеть, как работают фрагменты, вы можете указать пустые фрагменты, чтобы увидеть доступные заполнители, и вы можете объединять таблицы на лету.

    pdoTools — это библиотека, а не просто набор фрагментов. Многие дополнения MODX используют pdoTools для своих собственных фрагментов, таких как miniShop2, Tickets, BannerY, AjaxForm и другие.

    Самым большим недостатком pdoTools является ограниченная документация на английском языке. Все, что у нас есть, находится здесь https://github.com/bezumkin/Docs/tree/master/en/01_Components/01_pdoTools. Если вы заинтересованы, вы можете помочь, добавив дополнительные страницы в документацию.

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

    MySQL FULLTEXT Search для MODX CMS

    Что это такое?

    FullTextSearch добавляет возможности и функциональные возможности FULLTEXT-поиска MySQL в MODX, используя полностью настраиваемую таблицу поисковых индексов. Укажите поля ресурсов, TV и контент из других таблиц для включения в индекс. Он интегрируется с листинговыми сниппетами, такими как getResources и pdoResources, для шаблонного вывода.

    Для полнофункциональных поисковых решений, готовых к использованию на предприятиях, MODX CMS поддерживает Solr и Elasticsearch с хорошо адаптированным SimpleSearch Extra. Это рекомендуемый подход для сайтов со сложными требованиями к поиску. SimpleSearch представляет собой большой вклад сообщества и работу замечательных разработчиков, таких как Ян Пека. FullTextSearch не является «конкурентом» — он просто другой.

    FullTextSearch так же легко настраивается, как и SimpleSearch, не имеет сторонних зависимостей и в некоторых случаях обеспечивает повышенную производительность. Вы можете делать с ним интересные вещи, такие как «умные» страницы 404. Это может быть действительно подходящим для вашего варианта использования. Опять же, может и нет.

    Этот устаревший, но все еще актуальный пост от DigitalOcean многое объясняет о том, что за кулисами делает полнотекстовый поиск MySQL (FTS). Официальная документация также является важным ресурсом для чтения. FullTextSearch Extra для MODX управляется на GitHub, а в файле README содержится дополнительный подробный контекст о реализации FTS для MODX.

    Только полностью ознакомившись с функциями FTS, вы сможете принять взвешенное решение о том, использовать ее для своего сайта или нет.

    Зачем делать это?

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

    Существующие решения

    • Если вы не развернете сторонний движок, такой как Elasticsearch, SimpleSearch Extra полагается на MySQL НРАВИТСЯ запросов. Они несколько ограничены по сравнению с тем, что вы можете делать с FTS.
    • AdvSearch Extra использует Zend Lucene Search API, добавляя зависимость. Возможно, его сложнее реализовать, и он начинает немного стареть (последний коммит 2016 года на момент написания этой статьи).

    Ни одно из этих решений не удовлетворяло потребности без дополнительных зависимостей. Таблица MODX site_content имеет FULLTEXT-индекс для некоторых ключевых полей Resource, но поиск по комбинации этих индексов требует некоторой гимнастики, и я не знаю никаких готовых решений.

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

    Итак, когда MySQL 5.6 был выпущен с полнотекстовым поиском, казалось, что на его основе должно быть полнофункциональное решение MODX. Таким образом, FullTextSearch Extra.

    Однако есть оговорки.

    Чем не является.

    MySQL не является поисковой системой. Алгоритм релевантности MySQL основан на концепции редкости . Если слово появляется в очень небольшом количестве ресурсов, те ресурсы, в которых оно есть, будут иметь очень высокую релевантность для этого слова. Если слово встречается более чем в 50% ресурсов, оно игнорируется, а ресурсы, в которых оно присутствует, не будут возвращаться при поиске по этому слову. Таким образом, поиск «MODX» на этом сайте, например, фактически ничего не даст. Есть и другие особенности MySQL FTS, которые также могут удивить.

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

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *