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

Главные вкладки

Аватар пользователя roomit roomit 16 октября 2017 в 16:17

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

Лучший ответ

Аватар пользователя BatKor BatKor 16 октября 2017 в 17:22
1

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

Комментарии

Аватар пользователя roomit roomit 16 октября 2017 в 16:50

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

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

Аватар пользователя BatKor BatKor 16 октября 2017 в 17:22
1

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

Аватар пользователя roomit roomit 16 октября 2017 в 18:07

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

<?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.

Аватар пользователя roomit roomit 16 октября 2017 в 18:33

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

Аватар пользователя roomit roomit 16 октября 2017 в 22:32

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

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

Аватар пользователя gun_dose gun_dose 16 октября 2017 в 22:56

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

Аватар пользователя roomit roomit 17 октября 2017 в 12:50

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