Перейти к содержимому


Изменить алгоритм поиска

Поиск

  • Вы не можете ответить в тему
Сообщений в теме: 10

#1 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 09 November 2015 - 12:02 AM

Дорогие друзья, всем привет.
Сразу в пекло так сказать. Смотрите, вот у нас есть поиск на сайте ShopCMS, как сделать так, чтобы он осуществлял поиск например вот такой - Вводим запрос: Драконы, а нам система показывает и дракон, и драконы, и о драконах. Возможно ли это сделать? А то сейчас получается такая ситуация: Вводим: Дракон - дракон, драконы и о драконах показываются. А если вводим "драконы", то в выдаче остаются тока "драконы", а нужно чтобы все три заголовка показывались. Как это сделать? И существует ли вообще решение этой проблемы. Спасибо.
  • 0

#2 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 09 November 2015 - 12:42 AM

внести алгоритм "морфологии" отсюда http://vsupport.club...огичные товары в механизм поиска
  • 0
Изображение Изображение Изображение

#3 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 09 November 2015 - 12:51 AM

Кстати, вот еще заметил момент. Вот я настроил так, чтобы поиск тока по названию искал, больше мне не нужно. У меня в магазине товаров тридцать, я решил проверить. Ввел знак "ъ" - и мне показались все товары, хотя этого символа не было ни в одном названии товаров. Потом получилась ваще странность. У меня в магазине есть лампы и есть трубы.
Ввел запрос - Лампа - показались и лампы, и трубы. Ввел запрос "Труба", показались только трубы. Просто мистика какая-та. Вот сайт для интереса - cabelef.ru
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2015 - 01:03 AM

Как мне кажется, наиболее простое решение проблемы в случае проиндексированности сайта яндексом - поставить на сайт Яндекс-поиск. А уж как там у них сделан разбор слова на падежи и прочие окончания - их забота.
Как это работает можно посмотреть на https://cpu.badisoft.ru/ набрав в Яндекс-поиске (он вверху справа), например, "дрели". Будут найдены и "дрели", и "дрель".
Как установить поиск я на форуме, вроде, описывал. Вот еще раз:
=============================
1. Заходим на http://site.yandex.ru/searches/new/ и создаем себе поиск.
Из созданного поиска для установки нужен, по сути, только идентификатор (номер) созданного поиска.
Примерно такой - #1234567.
Хотя можно и поиграться с разными вариантами вида поискового блока.

2. Создаем в "Менеджере страниц" страницу (пускай она будет page_2.html) с названием и title Yandex-Search.
Именно такое название и titlе совершенно не обязательны, но если у вас ЧПУ автотранслирует имя страницы в ЧПУ-ссылку,
то довольно логично получить результатом поиска страницу yandex-search.html с аналогичным title :).

Текст страницы надо вставлять в режиме "Источник":

<div onclick="return {'tld': 'ru', 'language': 'ru', 'encoding': 'windows-1251', 'htmlcss': '1.x', 'updatehash': true}" id="ya-site-results">&nbsp;</div>
<script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0];s.type='text/javascript';s.async=true;s.charset='utf-8';s.src='http://site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Results.init()})})(window,document,'yandex_site_callbacks');</script>


Что вписать в метатеги description и keywords - ей богу не знаю.


3. в файл index.tpl.html вставляем код Яндекс-поиска.
Сам код это то, что расположено между {literal} и {/literal}.
Остальная обвязка может быть другой в зависимости от шаблона и желаемого места расположения.

http://yousite.ru/yandex-search.html надо будет заменить на свой сайт (а если нет ЧПУ, то и на page_2.html),
а 124567 на код из п.1.

Для дефолтового шаблона это будет выглядеть так:

после строки


<td><a href="{if $smarty.const.CONF_MOD_REWRITE eq 1}wide_search.html{else}index.php?search_with_change_category_ability=yes{/if}"><b>{$smarty.const.ADVANCED_SEARCH_LINK}</b></a></td>


вставляем


<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td width="30%">
{literal}
<div class="ya-site-form ya-site-form_inited_no" onclick="return {'bg': 'transparent', 'target': '_self', 'language': 'ru', 'suggest': true, 'tld': 'ru', 'site_suggest': true, 'action': 'http://yousite.ru/yandex-search.html', 'webopt': false, 'fontsize': 12, 'arrow': false, 'fg': '#000000', 'searchid': '1234567', 'logo': 'rb', 'websearch': false, 'type': 2}"><form action="http://yandex.ru/sitesearch" method="get" target="_self"><input type="hidden" name="searchid" value="1234567" /><input type="hidden" name="l10n" value="ru" /><input type="hidden" name="reqenc" value="windows-1251" /><input type="text" name="text" value="" /><input type="submit" value="Yandex-search" /></form></div><style type="text/css">.ya-page_js_yes .ya-site-form_inited_no { display: none; }</style><script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;(' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1&&(e.className+=' ya-page_js_yes');s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');</script>
{/literal}
</td>


Ввел знак "ъ" - и мне показались все товары, хотя этого символа не было ни в одном названии товаров.

Думаю, SQL таблицы работают в latin, а не в cp1251. Соответственно, поиск (LIKE в SQL-запросе) работает некорректно.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 09 November 2015 - 01:05 AM

Хмммм.... и из-за этого может не работать такое, как если ввести "лампа", то все лампы и трубы показываются, а "труба" вводим тока трубы? это тоже из-за latin, а не в cp1251
  • 0

#6 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 09 November 2015 - 12:54 PM

Хммм. Походу действительно в кодировке дело. База в UTF8 у меня. Подскажите, можно ли сделать подтправить поиск так, чтобы он корректно производил поиск? Или нельзя? Или надо все сносить и делать сайт на CP1251 базу?

Да, и еще... я уверен, что мне не под силу будет сделать это. Поэтому хочу узнать кто сможет помочь за денежку мне помочь. Спасибо.
  • 0

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2015 - 02:45 PM

Или надо все сносить и делать сайт на CP1251 базу?

Именно так.
1. Сделать бэкап базы
2. проверить, сохранилась ли в бэкапе русскоязычная информация хоть в какой-то кодировке, а то могут быть одни вопросики вместо русского в зависимости от разных факторов.
3. перекодировать бэкап в win1251 (это обычный текстовый файл, просто большой на рабочей базе).
4. заменить DEFAULT CHARSET в SQL-запросах в бэкапе на CP1251
5. создать новую базу в правильной кодировке (CP1251)
6. восстановить свою базу из бэкапа

Возможно, существует менее заморочный способ смены кодировки и collation table (она и нужна для корректного поиска, но без смены кодировки ее на нужную не сменить), но я его не знаю.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 09 November 2015 - 02:46 PM

ок, попробуем, спасибо.
  • 0

#9 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 24 November 2015 - 08:44 PM

Всем привет. Итак, проблему решил. Заказывал на фрилансе программу, которая может спокойно переводить файл из CP1252 в CP1251. Теперь все ок.
Скачивайте тут - https://www.dropbox....ecoder.zip?dl=0
  • 0

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 November 2015 - 10:33 PM

Заказывал на фрилансе программу, которая может спокойно переводить файл из CP1252 в CP1251

А что делает эта программа? Бесплатных конвертеров текстового файла из одной кодировки в другую - вагон и тележка.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 24 November 2015 - 10:35 PM

Не знаю, что она делает. Бесплатные ни один мне не помог. А эта сделала, может у меня и руки из одного места растут. Но в любом случае. Мне помогла эта прога, может кому тоже поможет.
  • 0