Допиливаем Умный поиск в Joomla 2.5 (русский парадигматический стеммер для Joomla)

  • 23 Ответов
  • 9323 Просмотров

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

*

stt

  • Осваиваюсь на форуме
  • ***
  • 50
  • 3
Здравствуйте, уважаемые. На днях у меня встала задача к самописному компоненту приделать поиск. Хороший поиск. Быстрый и с русским морфологическим разбором. Можно, конечно, подключить поиск от Яндекс или 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, 23:45:22 от b2z »

*

stt

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

*

stt

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

*

stt

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

*

stt

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

*

Ivan13

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

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

*

stt

  • Осваиваюсь на форуме
  • ***
  • 50
  • 3
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #6 : 20.02.2013, 01:55:43 »
"Знакомство с Умным поиском в Joomla порадовало. Но не очень. Порадовало, что прикрутить его к своему компоненту оказалось не сложно. Нужно взять один из плагинов в папке plugins\finder\ и переписать под свой компонент."

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

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

*

oleg8800

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

*

stt

  • Осваиваюсь на форуме
  • ***
  • 50
  • 3
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #8 : 02.05.2013, 22:24:58 »
С JoomShopping не работал, поэтому ничего не подскажу.

*

oleg8800

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

*

stt

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

*

oleg8800

  • Осваиваюсь на форуме
  • ***
  • 81
  • 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #11 : 06.05.2013, 13:01:30 »
если можно, подробнее.или пример   

*

Em1pty

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

*

stt

  • Осваиваюсь на форуме
  • ***
  • 50
  • 3
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #13 : 10.05.2013, 21:09:34 »
Подскажите по Virtuemаrt. как "умный поиск" jooml'ы заставить по нему работать?

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

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

*

romans13

  • Осваиваюсь на форуме
  • ***
  • 124
  • 4
  • Присоединяюсь к вышеВЫсказанному
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #14 : 15.05.2013, 11:58:35 »
Это только за вознаграждение.... согласен на все сто :) умственный труд должен оплачиваться 8)
Мучаю SEYRET , 404SEF и CB на родненьком www.tamadenok.ru

А времени все нет и уже не хочется...

*

oleg8800

  • Осваиваюсь на форуме
  • ***
  • 81
  • 0
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #15 : 20.05.2013, 10:59:14 »
Сколько будет стоить плагин для JoomShopping?

*

Bismuth

  • Осваиваюсь на форуме
  • ***
  • 140
  • 2
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #16 : 21.09.2013, 15:21:04 »
6. Задаем мне вопросы, если что-то не понятно.

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

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

*

DimonSX

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

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

*

ChaosHead

  • Профи
  • ********
  • 4668
  • 396
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #18 : 06.09.2014, 11:16:03 »
Ссылка битая в первом посте

*

stt

  • Осваиваюсь на форуме
  • ***
  • 50
  • 3
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #19 : 06.09.2014, 15:57:00 »
Ссылка битая в первом посте
Исправил ссылку

*

ChaosHead

  • Профи
  • ********
  • 4668
  • 396
Re: Допиливаем Умный поиск в Joomla 2.5
« Ответ #20 : 21.02.2015, 13: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, 14:13:01 от ChaosHead »

*

kryglik

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

*

isay777

  • Осваиваюсь на форуме
  • ***
  • 42
  • 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

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