Есть ли решение проблемы с поиском в Drupal 8 с учетом русской морфологии или хотя бы реализация регистронезависимого поиска на русском языке (т.е., чтобы по запросу иванов были найдены материалы, содержащие фамилию Иванов)?
Поиск с учетом русской морфологии в Drupal 8
Главные вкладки
Лучший ответ
1
Здравсствуйте!
Можете воспользоваться модулем snowball_stemmer
Но по умолчанию он не работает для русского языка, хотя библиотека позволяет. и потому можете изменить модуль добавив патч https://www.drupal.org/node/2914884 или же просто добавить в массив 'ru' => 'Russian'.
Надеюсь в ближайшее время патч применят.
Удачи!
Комментарии
http://xandeadx.ru/blog/drupal/686
http://drupal.ru/node/71073
"регистронезависимого поиска" -
Enabled processors
Игнорировать регистр
This processor will make searches case-insensitive for fulltext or string fields.
Большое спасибо! И куда мои глаза смотрели... )
По поводу морфологического поиска, я так понял, что под 8 версию Drupal единственный вариант - использовать Apache Solr + Search API Solr Search + Search API.
Хотелось не усложнять и реализовать поиск через модуль русского стемминга для Search API, который пока не разработан под Drupal 8. Думал, есть решения "на коленках". ))
Здравсствуйте!
Можете воспользоваться модулем snowball_stemmer
Но по умолчанию он не работает для русского языка, хотя библиотека позволяет. и потому можете изменить модуль добавив патч https://www.drupal.org/node/2914884 или же просто добавить в массив 'ru' => 'Russian'.
Надеюсь в ближайшее время патч применят.
Удачи!
Благодарю за комментарий, но не получилось его применить. Добавил строку в массив:
<?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.
Как вы устанавливали модуль? Библиотека с классами появилась? Там есть класс Russian
Сейчас понял, что перед установкой модуля под друпал необходимо установить библиотеку php-stemmer. Как ее правильно установить, понять не могу...
Будьте добры, дайте ориентир, куда копать? )
Устанавливайте данный модуль через композер , а как в ручную я даже не знаю
На восьмёрке без композера ставятся только самые микроскопические модули. А подобные вещи без него никак. Вообще, как по мне, на восьмерке об установке модулей через драш и уж тем более через админку нужно забыть.
phpmorphy
Использовал его как-то в своих проектах. Но чтобы прикручивать к друпалу вручную/писать модуль стемминга пока не хватает знаний. ) Искал готовое решение