Внедрение стороннего модуля поиска
Внедрение стороннего модуля поиска
Здравствуйте! Столкнулся с такой проблемой, как отсутствие морфологии в поиске. Из-за отсутствия других родных модулей поиска придется внедрять сторонний. Насколько трудоемким будет этот процесс? Как можно быстро определить имена таблиц и полей, по которым производится поиск в родном модуле?
Re: Внедрение стороннего модуля поиска
Расширения -> Поиск -> Настройки
Внизу под окном TextArea чекбокс с надписью:
Использовать морфологический поиск (только для английского)
- сделай для русского
Внизу под окном TextArea чекбокс с надписью:
Использовать морфологический поиск (только для английского)
- сделай для русского
Re: Внедрение стороннего модуля поиска
Что значит "сделай для русского"? Дополнительный чекбокс добавить что ли?dexel wrote: Расширения -> Поиск -> Настройки
Внизу под окном TextArea чекбокс с надписью:
Использовать морфологический поиск (только для английского)
- сделай для русского
Re: Внедрение стороннего модуля поиска



Модуль поиска, конечно здесь ужасный
Чего можно добиться - это регистронезависимого поиска, для этого нужно с помощью phpmyadmin (Операции - Сравнение) пересохранить таблицу _content и таблицу _module_news в кодировке utf8_general_ci или utf8_unicode_ci
Еще лучше при создании базы (при инсталляции cms ) сразу использовать эти кодировки.
Но вот что меня удивляет.
При использовании модуля Search если на сайте есть слово "спортсмены", то по запросу "спорт" поиск не выдает результатов.
Если такой же запрос "спорт" сделать к базе с помощью phpmyadmin - ответ "спортсмены" будет в результатах поиска.
Т.е. вопрос не к базе и не SQL, а вопрос к запросу, который CMSMS посылает к базе.
Предполагаю, что если из CMSMS послать такой же запрос, как посылает phpmyadmin - результат придет правильный.
Еще остается вопрос, что CMSMS с этим ответом делает.
Эх, жаль, что я не программист, мне кажется, что для специалиста - это вопрос 10-ти минут.
Кстати вот пример http://cms-simple.ru/ сайта на CMSMS, где корректно работает поиск, я там даже зарегистрировался и написал письмо админу про поиск по сайту, но ни ответ ни привета

Re: Внедрение стороннего модуля поиска
Ну да, заметно, что ты не программист. 10 минут? А ну напиши все слова русского языка без окончаний за 10 минут! Вот просто перечисли хотябы. У Сфинкса для этого словари подключаются.
Теперь о деле. Да. Потроха модуля Search страшные. Только следует ещё учесть, что контент CMSMS размазан по всем таблицам. Имеется ввиду контент для индексирования. Вот вам и структура модуля поиска, который в CMSMS.
Сторонний модуль хоца? А Сфинкс, с облаком тэгов в придачу? И с русским штеммером? Как пример реализации Сфинкса на CMSMS тут: http://international-site.net . Облако тегов там тоже на Sphinx.
А фраза "Сделай для русского" означает, что копать нужно в сторону стеммера Портера русского. И в модуле Search родном есть класс, называется PorterStemmer.class.php - он для англицкого.
Теперь о деле. Да. Потроха модуля Search страшные. Только следует ещё учесть, что контент CMSMS размазан по всем таблицам. Имеется ввиду контент для индексирования. Вот вам и структура модуля поиска, который в CMSMS.
Сторонний модуль хоца? А Сфинкс, с облаком тэгов в придачу? И с русским штеммером? Как пример реализации Сфинкса на CMSMS тут: http://international-site.net . Облако тегов там тоже на Sphinx.
А фраза "Сделай для русского" означает, что копать нужно в сторону стеммера Портера русского. И в модуле Search родном есть класс, называется PorterStemmer.class.php - он для англицкого.
Re: Внедрение стороннего модуля поиска
Да, я не программист, но объясни мне почему в phpmyadmin, когда я задаю трехбуквенный запрос "хим" к базе я получаю ответ в виде Химия, химический, полихим, БиоХимПотребсоюз ... ну и т.д.
Значит это не сложно искать ТОЧНОЕ совпадение по базе?
Для начала такой вариант (регистронезависимый, без учета морфологии) мог бы удовлетворить потребности в поиске по сайту. Это куда лучше, чем фраза "ничего не обнаружено"
Теперь, что касается морфологии...
Есть отличный скрипт для организации поиска по сайту, называется phprusearch, скрипт в работе можно увидеть тут: http://ital-tecno.com.ua/
Этот скрипт отлично справляется со всякими падежами / склонениями при поиске в русскоязычном контенте.
Единственная фигня это то, что скрипт очень старый и работает только с однобайтной кодировкой, но логику морфологического поиска можно взять оттуда, поверьте мне, я хоть и не программист, но ничего сверхъестественного там нет.
Если возникнет желание покопаться в коде phprusearch, пишите сюда - я выложу исходники.
Значит это не сложно искать ТОЧНОЕ совпадение по базе?
Для начала такой вариант (регистронезависимый, без учета морфологии) мог бы удовлетворить потребности в поиске по сайту. Это куда лучше, чем фраза "ничего не обнаружено"
Теперь, что касается морфологии...
Есть отличный скрипт для организации поиска по сайту, называется phprusearch, скрипт в работе можно увидеть тут: http://ital-tecno.com.ua/
Этот скрипт отлично справляется со всякими падежами / склонениями при поиске в русскоязычном контенте.
Единственная фигня это то, что скрипт очень старый и работает только с однобайтной кодировкой, но логику морфологического поиска можно взять оттуда, поверьте мне, я хоть и не программист, но ничего сверхъестественного там нет.
Если возникнет желание покопаться в коде phprusearch, пишите сюда - я выложу исходники.
Re: Внедрение стороннего модуля поиска
У меня Сфинкс. Твой скрипт мне ни к чему.
А вот если уж кому хочется в шкуре мамонта с топором бегать, могу дать чуть по-новее твоей разработку - стеммер Портера называется. Работает на уровне PHP. Он - для русской морфологии. Вот выложил тут:
http://international-site.net/news/185/ ... er-portera
Этот код монтируется в файл PorterStemmer.class.php модуля Search от CMSMS, вместо английского.
А вот если уж кому хочется в шкуре мамонта с топором бегать, могу дать чуть по-новее твоей разработку - стеммер Портера называется. Работает на уровне PHP. Он - для русской морфологии. Вот выложил тут:
http://international-site.net/news/185/ ... er-portera
Этот код монтируется в файл PorterStemmer.class.php модуля Search от CMSMS, вместо английского.