Поиск с учетом русской морфологии в Drupal 8

Аватар пользователя roomit

Есть ли решение проблемы с поиском в Drupal 8 с учетом русской морфологии или хотя бы реализация регистронезависимого поиска на русском языке (т.е., чтобы по запросу иванов были найдены материалы, содержащие фамилию Иванов)?

Модули и темы:
Тип материала:
Версия Drupal:
0 Thanks

Лучший ответ

Аватар пользователя BatKor
BatKor 1 месяц назад
1

Здравсствуйте!
Можете воспользоваться модулем snowball_stemmer
Но по умолчанию он не работает для русского языка, хотя библиотека позволяет. и потому можете изменить модуль добавив патч https://www.drupal.org/node/2914884 или же просто добавить в массив 'ru' => 'Russian'.
Надеюсь в ближайшее время патч применят.
Удачи!

Комментарии

Аватар пользователя roomit
roomit 1 месяц назад

Большое спасибо! И куда мои глаза смотрели... )

По поводу морфологического поиска, я так понял, что под 8 версию Drupal единственный вариант - использовать Apache Solr + Search API Solr Search + Search API.
Хотелось не усложнять и реализовать поиск через модуль русского стемминга для Search API, который пока не разработан под Drupal 8. Думал, есть решения "на коленках". ))

Аватар пользователя BatKor
BatKor 1 месяц назад
1

Здравсствуйте!
Можете воспользоваться модулем snowball_stemmer
Но по умолчанию он не работает для русского языка, хотя библиотека позволяет. и потому можете изменить модуль добавив патч https://www.drupal.org/node/2914884 или же просто добавить в массив 'ru' => 'Russian'.
Надеюсь в ближайшее время патч применят.
Удачи!

Аватар пользователя roomit
roomit 1 месяц назад

Благодарю за комментарий, но не получилось его применить. Добавил строку в массив:

<?php
  
public function setLanguage($language) {
    
$supported = [
      
'dk' => 'Danish',
      
'nl' => 'Dutch',
      
'en' => 'English',
      
'fr' => 'French',
      
'de' => 'German',
      
'it' => 'Italian',
      
'no' => 'Norwegian',
      
'pt' => 'Portuguese',
      
'ro' => 'Romanian',
      
'ru' => 'Russian',
      
'es' => 'Spanish',
      
'sv' => 'Swedish',
    ];
?>

Включил Snowball stemmer во вкладке Processors, но при попытке перенидексировать индекс получаю следующую ошибку:
Error: Class 'Wamania\Snowball\Russian' not found in Drupal\snowball_stemmer\Stemmer->setLanguage() (line 70 of /vhosts/site.ru/site/html/modules/snowball_stemmer/src/Stemmer.php) #0

В чем может быть причина? Вроде, патч недавний, а модуль не обновлялся с мая, но судя по ошибке не может найти класс Wamania\Snowball\Russian.

Аватар пользователя BatKor
BatKor 1 месяц назад

Как вы устанавливали модуль? Библиотека с классами появилась? Там есть класс Russian

Аватар пользователя roomit
roomit 1 месяц назад

Сейчас понял, что перед установкой модуля под друпал необходимо установить библиотеку php-stemmer. Как ее правильно установить, понять не могу...

Аватар пользователя roomit
roomit 1 месяц назад
BatKor написал:
Как вы устанавливали модуль? Библиотека с классами появилась? Там есть класс Russian

Будьте добры, дайте ориентир, куда копать? )

Аватар пользователя BatKor
BatKor 1 месяц назад

Устанавливайте данный модуль через композер , а как в ручную я даже не знаю

Аватар пользователя gun_dose
gun_dose 1 месяц назад

На восьмёрке без композера ставятся только самые микроскопические модули. А подобные вещи без него никак. Вообще, как по мне, на восьмерке об установке модулей через драш и уж тем более через админку нужно забыть.

Аватар пользователя roomit
roomit 1 месяц назад

Использовал его как-то в своих проектах. Но чтобы прикручивать к друпалу вручную/писать модуль стемминга пока не хватает знаний. ) Искал готовое решение