И снова про filter для tag_cloud
Posted: Tue Feb 14, 2023 3:05 pm
Поюзав данную фишку, пришёл к выводу , что для полного счастья очень не хватает одной "плюшки".
Нужно что бы фильтр filter для tag_cloud работал не только по полному вхождению, а искал релевантные варианты.
Нужно это для формирования облака тагов на странице тага.
Сейчас, на странице тага (/scj/cgi/?tag=some-test-tag) конструкция
<tag_cloud filter="GET_tag"
выведет в лучшем случае один результат = some-test-tag , и то, только лишь в том случае, если он в статусе актив.
А хочется, иметь конструкцию, которая выведет (при наличии в базе конечно же) таги:
some-best-tag
some-tag
test-some
etc...
Я думаю, правильнее всего было бы через сфинкс искать. Но для этого наверное нужно индексить таги отдельно от основного индекса. Не знаю, правильно ли это.
Как альтернативный вариант может быть рассмотреть простоq поиск мускулем. Что то типа:
Но сфинсом конечно было бы лучше. Если в таге есть предлоги (a the in) - сфинкс это игнорирует, а мускулем "найдётся всё"
Нужно что бы фильтр filter для tag_cloud работал не только по полному вхождению, а искал релевантные варианты.
Нужно это для формирования облака тагов на странице тага.
Сейчас, на странице тага (/scj/cgi/?tag=some-test-tag) конструкция
<tag_cloud filter="GET_tag"
выведет в лучшем случае один результат = some-test-tag , и то, только лишь в том случае, если он в статусе актив.
А хочется, иметь конструкцию, которая выведет (при наличии в базе конечно же) таги:
some-best-tag
some-tag
test-some
etc...
Я думаю, правильнее всего было бы через сфинкс искать. Но для этого наверное нужно индексить таги отдельно от основного индекса. Не знаю, правильно ли это.
Как альтернативный вариант может быть рассмотреть простоq поиск мускулем. Что то типа:
Code: Select all
$for_search = preg_replace(
array('/[\p{P}]/', '/(\s+)/'),
array('', '|'),
$_GET['tag']
);
SELECT FROM rot_tags WHERE tag_name RLIKE '$for_search' ....