0 Пользователей и 1 Гость просматривают эту тему.
  • 25 Ответов
  • 14049 Просмотров
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Здравствуйте, уважаемые. На днях у меня встала задача к самописному компоненту приделать поиск. Хороший поиск. Быстрый и с русским морфологическим разбором. Можно, конечно, подключить поиск от Яндекс или Google, но это запасной вариант. Тем более, что сайт еще только в локальном варианте и на каком доменном имени он будет висеть, еще заказчик не определился.
Знакомство с Умным поиском в Joomla порадовало. Но не очень. Порадовало, что прикрутить его к своему компоненту оказалось не сложно. Нужно взять один из плагинов в папке plugins\finder\ и переписать под свой компонент. На этом моменте я останавливаться не буду, потому как это очень зависит от того компонента, к которому прикручивается умный поиск. Хотя, если появятся желающие узнать подробности, то постараюсь ответить. Те плагины, которые уже установлены в Joomla, позволяют использовать Умный поиск в материалах, категориях, контактах, web-ссылках и лентах новостей.
А что же меня не порадовало? А собственно то, что никакой морфологический разбор для русского языка в Joomla не предусмотрен. Какое ввели слово, такое слово и будет искать.
Поиски в интернете стеммера для русского языка дали обнадеживающие результаты. Нашлось несколько стеммеров Портера для русского языка. Ядро у них всех было одинаковым, видимо автор один. К сожалению, я не знаю имени автора, но в любом случае ему спасибо. Я взял стеммер для Wordpress и переписал его для Joomla.
Ссылка на файл porter_ru.php: http://redozator.ru/files/porter_ru.zip. Чтобы его установить, нужно:
1. Поместить его в папку administrator\components\com_finder\helpers\indexer\stemmer\
2. В файле administrator\components\com_finder\config.xml ищем описание поля stemmer и вставляем строчку
Код
<option value="porter_ru">rus stemmer</option>
В версии Joomla 2.5.6 это 201-я строка файла config.xml.
3. В админ. панели, в настройках умного поиска выбираем в поле Парадигматический модуль наш новый стеммер rus stemmer.

"И чо?" - скажите вы, - "почему не работает?". Я сам удивлен! Действительно не работает. Точнее работает, но кое-как. Пришлось копать глубже в код компонента умного поиска. Без хака не обошлось.

4. Открываем файл administrator\components\com_finder\helpers\indexer\query.php и изменяем строку 1305
было:
Код
$query->where('t.term = ' . $db->quote($token->term));
стало:
Код
$query->where('(t.term = ' . $db->quote($token->term). ' OR t.stem = ' . $db->quote($token->stem). '  OR t.stem = ' . $db->quote($token->term). ')');
5. Проверяем работу.
6. Задаем мне вопросы, если что-то не понятно.
« Последнее редактирование: 28.02.2015, 21:45:22 от b2z »
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #1 : 10.09.2012, 07:41:10 »
Почему Joomla так гнобят все теперь понятно...
зачем лезть в ядро? почему не написать плагин?!
Ну это не совсем ядро Joomla - это компонент com_finder. Основную логику поиска не заменить плагином. Если очень хочется оставить Joomla и ее стандартные компоненты в неприкосновенности, то нужно полностью переписать com_finder, переименовать его и установить в системе, как дополнительный умный поиск.
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #2 : 12.09.2012, 08:18:04 »
А вы обновите Joomla и посмотрите или это не совсем ядро... и кстати после радости com_finder у вас осталась радость  от ужасно разросшейся базы данных и в разы замедлившейся скорости работы Joomla?
Про ужасно разросшуюся базу данных на форуме уже поднимался вопрос. Повторяться не будем. Для доски объявлений в пару сотен двух-трехстрочных объявлений умный поиск очень даже приемлем. От себя могу сказать, что умный поиск нужно использовать либо на маленьких объемах информации либо на о-очень больших.
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #3 : 13.09.2012, 11:52:42 »
на очень больших база будет весить оооооочееень много!
Не согласен. Количество слов и фраз в языке ограничено, поэтому на очень больших базах прирост индексных файлов при добавлении новых статей будет совсем небольшим.
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #4 : 19.09.2012, 11:11:50 »
у база с 30 материалами и базой размером в 500 килобайт после индексации умным поиском разросталасьдо 20 метров.. сколько будет весить база если про индексировать 1000 статей?
1000 статей - это не "очень большой объем". Я бы все-таки отнес это количество к среднему объему. По очень приблизительным подсчетам, эффективность умного поиска можно ждать на нескольких десятках тысяч статей объемом 1К - 5К символов каждая.
*

Ivan13

  • Новичок
  • 1
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #5 : 19.02.2013, 23:08:02 »
"Знакомство с Умным поиском в Joomla порадовало. Но не очень. Порадовало, что прикрутить его к своему компоненту оказалось не сложно. Нужно взять один из плагинов в папке plugins\finder\ и переписать под свой компонент."

Здравствуйте, подскажите пожалуйста как это сделать это чтобы поиск работал в VirtueMart
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #6 : 19.02.2013, 23:55:43 »
"Знакомство с Умным поиском в Joomla порадовало. Но не очень. Порадовало, что прикрутить его к своему компоненту оказалось не сложно. Нужно взять один из плагинов в папке plugins\finder\ и переписать под свой компонент."

Здравствуйте, подскажите пожалуйста как это сделать это чтобы поиск работал в VirtueMart

Ответил в почту.
*

oleg8800

  • Захожу иногда
  • 96
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #7 : 01.05.2013, 11:18:47 »
Здравствуйте, подскажите пожалуйста как это сделать чтобы поиск работал в JoomShopping.  ! !
Буду очень благодарен!
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #8 : 02.05.2013, 20:24:58 »
С JoomShopping не работал, поэтому ничего не подскажу.
*

oleg8800

  • Захожу иногда
  • 96
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #9 : 05.05.2013, 11:15:58 »
напишите тогда хоть для VirtueMart, если это возможно)))))))))))
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #10 : 05.05.2013, 12:13:56 »
напишите тогда хоть для VirtueMart, если это возможно)))))))))))
Если вам нужен просто пример реализации, то в папке plugins\finder есть несколько плагинов. Различия в основном в функциях getListQuery.
*

oleg8800

  • Захожу иногда
  • 96
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #11 : 06.05.2013, 11:01:30 »
если можно, подробнее.или пример   
*

Em1pty

  • Новичок
  • 1
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #12 : 10.05.2013, 13:02:38 »
Подскажите по Virtuemаrt. как "умный поиск" jooml'ы заставить по нему работать?
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #13 : 10.05.2013, 19:09:34 »
Подскажите по Virtuemаrt. как "умный поиск" jooml'ы заставить по нему работать?

Как я уже сказал, "Нужно взять один из плагинов в папке plugins\finder\ и переписать под свой компонент". Далее возможно два варианта:

1. Вы не знакомы с php, MySQL и разработкой под Joomla. В этом случае вам нужна не помощь - вам нужен готовый плагин. Это только за вознаграждение.
2. Вы уже что-то разрабатывали под Joomla и имеете какие-то навыки. Вы попробовали переписать плагин, но что-то у вас не получилсь. Тогда пришлите мне свой вариант плагина, я подскажу что вы недоработали и где ошиблись.
*

romans13

  • Захожу иногда
  • 122
  • 4 / 0
  • Присоединяюсь к вышеВЫсказанному
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #14 : 15.05.2013, 09:58:35 »
Это только за вознаграждение.... согласен на все сто :) умственный труд должен оплачиваться 8)
*

oleg8800

  • Захожу иногда
  • 96
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #15 : 20.05.2013, 08:59:14 »
Сколько будет стоить плагин для JoomShopping?
*

Bismuth

  • Захожу иногда
  • 138
  • 2 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #16 : 21.09.2013, 13:21:04 »
6. Задаем мне вопросы, если что-то не понятно.

Здравствуйте!
Конечно спасибо, после этого без труда проиндексировал все 3000 стр. но при воде поиск на сайте выдает одно и тоже (Вы имели в виду: хелли?) Хоть в админке поиск работает как надо

в чем причина я не могу понять((
*

DimonSX

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #17 : 28.09.2013, 06:40:09 »
5. Проверяем работу.
6. Задаем мне вопросы, если что-то не понятно.

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

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #18 : 06.09.2014, 09:16:03 »
Ссылка битая в первом посте
*

stt

  • Захожу иногда
  • 52
  • 3 / 1
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #19 : 06.09.2014, 13:57:00 »
Ссылка битая в первом посте
Исправил ссылку
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #20 : 21.02.2015, 11:52:15 »
$query->where('(t.term = ' . $db->quote($token->term). ' OR t.stem = ' . $db->quote($token->stem). '  OR t.stem = ' . $db->quote($token->term). ')');
Проверяю в Joomla 3.3.6 работает без этого хака. Не совсем понимаю зачем он нужен был?

Вот тут человек вносит в алгоритм небольшие изменения, поддерку суффиксов "ок", "ек". По слову "дружки" будет находиться "дружок" и подобное.
« Последнее редактирование: 21.02.2015, 12:13:01 от ChaosHead »
*

kryglik

  • Новичок
  • 1
  • 0 / 0
Добрый времени суток!
Возникла такая не хорошая ситуэйшен. Как бы я не старался включить отображение "умного поиска" в выпадающем меню "Компоненты". У меня ни как не выходит... Сколько раз я перезапустил плагины и модули... сколько файлов я перезалил на ftp просто не счесть... Уже даже немного руки опустил=( Подскажите может я не туда смотрю или не то юзаю ? Буду очень признателен!
*

isay777

  • Захожу иногда
  • 54
  • 0 / 0
в Joomla 3.3.4
вот эту часть не могу сделать
Цитировать
4. Открываем файл administrator\components\com_finder\helpers\indexer\query.php и изменяем строку 1305
было:
Код:
$query->where('t.term = ' . $db->quote($token->term));
стало:
Код:
$query->where('(t.term = ' . $db->quote($token->term). ' OR t.stem = ' . $db->quote($token->stem). '  OR t.stem = ' . $db->quote($token->term). ')');
5. Проверяем работу.

кто нибудь прописывал?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
В версиях выше 3.3.6 - 3.4.0 мне эта часть не понадобилась. Работает без неё, как я написал выше. На меньших не пробовал.
« Последнее редактирование: 07.05.2015, 00:13:14 от ChaosHead »
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Цитировать
Ссылка на файл porter_ru.php: http://redozator.ru/files/porter_ru.zip. Чтобы его установить, нужно:
1. Поместить его в папку administrator/components/com_finder/helpers/indexer/stemmer/
2. В файле administrator/components/com_finder/config.xml ищем описание поля stemmer и вставляем строчку
Код
<option value="porter_ru">rus stemmer</option>
3. В админ. панели, в настройках умного поиска выбираем в поле Парадигматический модуль наш новый стеммер rus stemmer.

Классно. Это действительно позволяет при запросе "осьминог" отображать варианты с различным окончанием ("осьминога", "осьминогов", "осьминогу"). Этого достаточно, чтобы вернуться с Яндекс.Поиска на "Умный поиск".
Жаль, что это решение не позволяет искать по части слова "осьмин". >:( Но в целом очень рад такой находке.

Полагаю, ничего лучше в 2020 и не придумать? А то пользователи хотят выполнять поиск и по части слова.
Например, чтобы при поиске "Сбор" находился и "Сборник", при поиске "кот" находился и "который" и т.д.
Помог? Поставь(те) плюс в репутацию.
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Вот тут человек вносит в алгоритм небольшие изменения, поддерку суффиксов "ок", "ек". По слову "дружки" будет находиться "дружок" и подобное.
Здравствуйте. Подскажите, пожалуйста, где это обсуждается либо в какую строку (и место) файла porter_ru.php следует вписать суффиксы? Спасибо.
Код
    var $VOWEL = '/аеиоуыэюя/u';
    var $PERFECTIVEGROUND = '/((ив|ивши|ившись|ыв|ывши|ывшись)|((?<=[ая])(в|вши|вшись)))$/u';
    var $REFLEXIVE = '/(с[яь])$/u';
    var $ADJECTIVE = '/(ее|ие|ые|ое|ими|ыми|ей|ий|ый|ой|ем|им|ым|ом|его|ого|еых|ую|юю|ая|яя|ою|ею)$/u';
    var $PARTICIPLE = '/((ивш|ывш|ующ)|((?<=[ая])(ем|нн|вш|ющ|щ)))$/u';
    var $VERB = '/((ила|ыла|ена|ейте|уйте|ите|или|ыли|ей|уй|ил|ыл|им|ым|ены|ить|ыть|ишь|ую|ю)|((?<=[ая])(ла|на|ете|йте|ли|й|л|ем|н|ло|но|ет|ют|ны|ть|ешь|нно)))$/u';
    var $NOUN = '/(а|ев|ов|ие|ье|е|иями|ями|ами|еи|ии|и|ией|ей|ой|ий|й|и|ы|ь|ию|ью|ю|ия|ья|я)$/u';
    var $RVRE = '/^(.*?[аеиоуыэюя])(.*)$/u';
    var $DERIVATIONAL = '/[^аеиоуыэюя][аеиоуыэюя]+[^аеиоуыэюя]+[аеиоуыэюя].*(?<=о)сть?$/u';
Помог? Поставь(те) плюс в репутацию.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль устанавливается, но Joomla его не видит

Автор ruppert

Ответов: 20
Просмотров: 16315
Последний ответ 01.08.2022, 05:30:50
от rezon777
Как добавить описание к пункту меню в Joomla 2.5? (Как у материалов)?

Автор nia

Ответов: 7
Просмотров: 5380
Последний ответ 29.03.2021, 12:10:26
от sivers
Конструктор страниц (Page Builder) для Joomla 2.5

Автор nia

Ответов: 4
Просмотров: 1314
Последний ответ 14.03.2021, 12:17:35
от nia
[FAQ] Как убрать <meta name="generator" content="Joomla! 2.5 - Open Source Content Management" />

Автор neket

Ответов: 56
Просмотров: 311670
Последний ответ 05.11.2020, 20:00:15
от Grigoriy82
Критические CSS стили в Joomla

Автор a-vikalingvo

Ответов: 17
Просмотров: 1560
Последний ответ 14.10.2020, 16:22:46
от v42bis