We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 785
    • 2,113 Posts
    Приделал к AjaxSearch 1.7 ограниченный учет морфологии русского языка.

    ВНИМАНИЕ: все сделано для кодировки utf-8.

    Полноценный анализ словоформ требует наличия словаря, что достаточно сильно замедляет поиск, поэтому для преобразования выбран, так называемый, стеммер Портера. Перед поиском выделяется главная часть слова, по которой и выполняется поиск.
    Для подключения учета словоформ в AjaxSearch 1.7 при использовании utf-8 следует прикрепленный файл stemmer.inc.php положить в папку assets/snippets/ajaxSearch/includes.
    Далее необходимо внести исправления в файл ajaxSearch.inc.php, находящийся в этой же папке.
    В начало файла, после комментариев, добавить строку:
    require_once(MODX_BASE_PATH . 'assets/snippets/ajaxSearch/includes/stemmer.inc.php');

    В функцию doSearch после строки
    	$search = explode(" ", $searchString);

    добавить строки:
    	$stemmer = new Lingua_Stem_Ru();
    	foreach ($search as &$word) {    
    		$word = $stemmer->stem_word($word);    
    	}
    	unset($word);
    	$searchString = implode(" ", $search);      

    После этого разные словоформы русского языка должны начать учитываться при поиске.

    Недостатки используемого способа:
    1. Стеммер все же не идеально выделяет основы слов, так что возможны некоторые ошибки, когда при поиске находятся лишние страницы.
    2. Подсветка работает только для слов, точно соответствующих запросу. Подсветка для словоформ не работает, также фрагменты с ними не показываются в результатах поиска – только заголовки страниц.
    3. Резко увеличивается количество найденных страниц, причем релевантность при выдаче не учитывается – в некоторых случаях удобнее воспользоваться точными запросами.

    Может быть лучше предлагать пользователю выбрать вариант – с учетом морфологии или без нее, но в этом случае требуется больше изменить AjaxSearch.

    Версию 1.6 тоже можно переделать, но я решил перейти на более новую версию и отказаться от старой. AjaxSearch доработан в соответствии с этим описанием.

    Пример работы поиска AjaxSearch с учётом морфологии русского языка можно посмотреть на этом сайте.
      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
      Статьи о MODx, регулярно новые публикации
      • 16955
      • 59 Posts
      Архив поврежден sad
        • 785
        • 2,113 Posts
        Quote from: LeonCrab at Feb 08, 2008, 10:40 AM

        Архив поврежден sad
        Сейчас нормально вроде бы. Почему-то архив упорно портился при добавлении к сообщению, пока не изменил его имя и увеличил размер (уменьшил степень сжатия).
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации