Dram

Рейтинг
1114
Регистрация
28.06.2008

Походу старый баг именно  str_replace, вон 11 лет назад тоже обсуждают https://www.linux.org.ru/forum/development/5591142

ответ вероятно в этом, цитирую

"Если же посмотреть на php_str_replace_in_subject() в ext/standard/string.c (фактически это и есть реализация str_replace()), она проходит по всему массиву $search и для каждого его элементы вызывает php_str_to_str_ex(), которая каждый раз просматривает строку заново"

Как оказалось недостаточно просто выбрать дефолтный маркер, нужно еще и жестко прописать его цвет, тогда цвета на группировке будут нормальные

   preset: 'islands#dotIcon',
            iconColor: '#735184'
WebAlt #:

В том же примере что по ссылке есть цвета, добавьте их в  свой код:

Там же эти цвета тупо для генерации рандомных точек. У меня же цвета меток задаются через стандартные цвета https://yandex.ru/dev/maps/jsapi/doc/2.1/ref/reference/option.presetStorage.html

В моем коде это - 

 preset: res[i].color
var clusterer = new ymaps.Clusterer();

Заменил на

    var clusterer = new ymaps.Clusterer({
        // Макет метки кластера pieChart.
        clusterIconLayout: 'default#pieChart',
        // Радиус диаграммы в пикселях.
        clusterIconPieChartRadius: 15,
        // Радиус центральной части макета.
        clusterIconPieChartCoreRadius: 10,
        // Ширина линий-разделителей секторов и внешней обводки диаграммы.
        clusterIconPieChartStrokeWidth: 1,
        // Определяет наличие поля balloon.
        hasBalloon: false
    });

Как видно на фото - синий и зеленый цвета (на иконках группировки) не совпадают с цветами одиночных иконок, почему так?

Наверное в плане релевантности лучше использовать полнотекстовый индекс да? И искать нужно не кратком заголовке, а по всему вопросу.

Проверил - по скорости тоже самое что LIKE без Юнион  ~0.04 сек

(SELECT 0 AS level, t1.*, CONCAT_WS('-', t1.id, t1.alias) AS item_alias, CONCAT_WS('-', t2.id, t2.alias) AS section_alias 
  FROM xyfq1_consultations_items AS t1
  INNER JOIN xyfq1_consultations_sections AS t2 ON t1.section_id = t2.id
  WHERE t1.parent_id = 0 AND t1.status = 1
  AND t1.id != '1850'
  AND t1.section_id = '17' AND (MATCH(t1.text) AGAINST ('Болезнь') OR MATCH(t1.text) AGAINST ('Паркинсона')))  
ORDER BY RAND()  LIMIT 3
Александр Мирту #:

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

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

Александр Мирту #:

Это попытка найти более точные результаты и поxожие

А в чем логика? Т.е. сначала ищем эти слова, а потом все что не содержит эти слова? Как это поможет повысить точность?

Вы просите помощи, чтобы потом засир*ть наши ящики спамом? Я все верно понял?
В общем разобрался, нужно еще учитывать как работает контроллер вашего компонента
Всего: 6924