Русский морфологический поиск для 5 Друпала

Прислано: Shelendor

вт, 06/02/2007 - 07:42

Другие статьи по теме:

Тут была ветка форума, в которой разработали модуль морфологического поиска, вот она http://drupal.ru/node/2449 но это для Друпала 4.7. Как его приделать к 5 версии? А то морфологический поиск актуален как и раньше :)

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано greenmother@dru... в вт, 06/02/2007 - 10:32.

Сделал адаптацию к 5-й версии и перевод (см. аттач)


Опубликовано Shelendor в вт, 06/02/2007 - 22:08.

greenmother@drupal.org - ещё не потестил, но заранее спасибо! :)


Опубликовано Onza в ср, 07/02/2007 - 01:48.

Спасибо! Еще бы "Типографику" адаптировать... :)


Опубликовано Shelendor в пн, 19/02/2007 - 14:47.

хм. наконец-то поставил его. почему-то не работает :( в оригинальной теме говорится о замене модуля search на модуль из прилагаемого архива, но это для 4.7.3. Как его применить к 5? может из-за этого у меня не работает?


Опубликовано sashka в пн, 19/02/2007 - 20:32.

Даааа... Действительно работает!
greenmother@drupal.org, респект!
Единственное, что добавил бы в твою инструкцию, так это пункт №4: Запустить cron.php, после которого у меня собственно всё и заработало. :)
По крайней мере на локольном хосте, на винде ... Про никсовый хостинг остаётся только молиться всем богам.


Опубликовано Shelendor в ср, 21/02/2007 - 13:51.

Люди! Пожалуйста, объясните мне, тупому, как адаптировать модуль поиска под 5 версию!!! Очень нужно!!! А простое включение rustemmer результата не даёт... :(


Опубликовано sashka в чт, 22/02/2007 - 22:12.

Не знаю поможет ли это, но я просто опишу, что сделал я на локольной машине (win32, apache1.3 php5 mysql4 pgsql8).
Для проверки работоспособности поиска я создал новую статью с текстом вашего поста "Люди! Пожалуйста, объясните мне..."
С начала я сделал рабочим обычный поиск, то есть если запрос "люди" он даёт ссылку на нашу статью и _подсвечивает_ слово "люди". Это критерий работоспособности обычного поиска. Далее я ставлю модуль и проделываю следующие шаги - они описаны в руководстве пакета по установке :)
1. Copy the rustemmer.module to the Drupal modules/ directory. Drupal should automatically detect it.
2. Go to 'administer > modules', and enable rustemmer.
3. Go to 'administer > settings > search' and click 'Re-index site'.

Плюс я запускаю cron.php (не знаю может в рамках этого скрипта выполняются те же действия что и при нажатии 'Re-index site' и когда я основательно всётаки пойму архитектуры дупала и посмеюсь над своим этим постом) после этого всё заработало. Вот критерии рабочего морф-ого поиска:
Только 'Re-index site'
1.1. Ищем "люди" -> Х
1.2. Ищем "людей" -> Х
1.3. Ищем "тупой" -> Х
1.4. Ищем "тупая" -> X
После cron.php
1.1. Ищем "люди" -> "люди" (слово подсвечено)
1.2. Ищем "людей" -> ссылка на нашу статью
1.3. Ищем "тупой" -> "тупой" (слово подсвечено)
1.4. Ищем "тупая" -> ссылка на нашу статью

Вроде бы всё.
Создал еще статью и снова проверил, работает по тому же алгоритму.


Опубликовано Shelendor в чт, 22/02/2007 - 23:35.

я всё это и так проделал :) а вот не работает морфология! на 4.7 работает, а тут нет :(


Опубликовано sashka в пт, 23/02/2007 - 00:21.

Елы-палы. Надо понять почему так... а то как не заработает в самый не подходящий момент и краднец!
Так... перехожу в режим "адвансед ламер" :)
Вот нюанс один заметил, не по уставу как говоится.
Я для "красоты" распаковал модуль не так, как сказано в инструкции, а в каталог `rustemmer` и в него всё содержимое архива.
Для понимания критериев работы поиска прошу:
1. Само содержимое дабы создать его фактически
2. Поисковые слова

Можно в личку.
Если уж ничего не поможет чесн слово, на принцип пойду — осталю новый друпал с нуля и заставлю работать поиск... может из-за модуля какого не пашет...

Думаю это не лишним будет:
Drupal 5.1
MySQL database 4.1.14
PHP 5.0.5
Web server Apache/1.3.29 (Win32) PHP/5.0.5


Опубликовано Shelendor в пт, 23/02/2007 - 13:35.

базовый модуль поиска.
создал статью с текстом "проверка работы поиска и модуля морфологического поиска на русском языке"
переиндексировал из настроек поиска и запустил крон.
задал поиск слова "проверка". поиск нашёл статью.

закидываю папку из архива rustemmer в директорию modules.
включаю модуль, переиндексирую сайт, запускаю крон.

поиск по слову "проверка" дал те же результаты, что естественно.
поиск по слову "провер" результатов не даёт. хоть об стенку бейся...

У меня 5 только что поставленный Друпал, никаких модулей кроме базовых нет. что делать - не знаю...


Опубликовано sashka в пт, 23/02/2007 - 14:07.

Ха! Даже не знаю радоваться или печалиться.
Создал контент "проверка работы поиска и модуля морфологического поиска на русском языке" с заголовком "проверка работы поиска", переиндексировал, запуситл cron.php и:
1. "проверка" - "проверка"
2. "провер" - X (провер - посути дела это подстрока, но не словоформа... то есть для данного поиска это прогое слово! провер, провера, проверу, провером и.д. :))
3. "проверкой" - находит статью но не подсвечивает!
4. "проверке" - находит статью но не подсвечивает!
5. "проверку" - находит статью но не подсвечивает!
Попробуйте эти словоформы!
Поциент скорее жив, чем мёртв!
Ну что могу сказать? С одной стороны не всё так плохо, но и не радужно: данный поиск ищет слова целиком.
ЗЫ:
Точно прославится человек, который напишет:
- морфологический - учёт словоформ
- размытий (fuzzy) - для компенсации ошибок в слове
- контекстный
- регистронезависимый
- с возможностью уточнения
поиск...


Опубликовано vadbars@drupal.org в пт, 23/02/2007 - 14:21.

> Точно прославится человек, который напишет: ...
И тогда это будет YandexSiteSearch (или Гугль). :)


Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? :) Полный русский перевод Drupal 5.x и еще некоторых модулей.


Опубликовано Shelendor в пт, 23/02/2007 - 15:26.

в общем, возникает вопрос как сделать на сайте человеческий поиск. не обязательно этим модулем, но поиск нормальный нужен...


Опубликовано sashka в пт, 23/02/2007 - 15:32.

Ну а каковы критерии нормального поиска? Я пока ничем не смогу помочь — любопытно просто. Этот меня весьма и весьма устраивает... 


Опубликовано Shelendor в пн, 26/02/2007 - 08:37.

итак, маразм с друпаловским поиском крепчает на глазах!

Здесь, на drupal.ru, даём запрос по слову "подменю". Получаем 2 страницы результатов, в том числе находится одно слово "подменюшек".

Даём запрос "подмен" - казалось бы, должны были быть получены те же результаты. ага, щаззз! Ничего не найдено!

Даём запрос "подменюш" - должна же найтись та статья со словом "подменюшек"! Но ничего не находится!

Или я дурак, или хз что... Люди, объясните!


Опубликовано axel в пт, 13/04/2007 - 18:42.

я поправил предыдущий комментарий, чтобы теги strong отображались


Опубликовано shamaner в чт, 08/11/2007 - 14:32.

нужная вестчь!!!


Опубликовано fasdalf@fasdalf.ru в вт, 15/01/2008 - 13:31.

В этом коде
$key = $stemmer->stem_word($key);
у меня #stemmer === NULL И подсветка идет лесом. Модуль включен, всё переиндексировано.
Не сразу заметил что надо

$stemmer = new RussianStemmer(); 
$key = $stemmer->stem_word($key);

Выбирает теперь правильное место в тексте, но в Strong не заелючает. Кроме того при отключении модуля "выносит" при попытке создать класс.


Опубликовано fasdalf@fasdalf.ru в вт, 15/01/2008 - 14:41.

Если первый кусок кода сделсать таким

if (class_exists('RussianStemmer')){
$stemmer = new RussianStemmer();
$key = $stemmer->stem_word($key);
$keys[$k] = $key;//aka:new
};
if (preg_match('/'. $boundary . '[' . WORD_CHARACTER . ']*' . $key . '[' . WORD_CHARACTER . ']*' . $boundary .'/iu', $text, $match, PREG_OFFSET_CAPTURE, $included[$key])) {
//if (preg_match('/'. $boundary . $key . $boundary .'/iu', $text, $match, PREG_OFFSET_CAPTURE, $included[$key])) {

то сайт переживет отключение модуля. Но вот почемувырубается подсветка - непонятно.

UPD

Второй кусок следует читать

  // Highlight keywords. Must be done at once to prevent conflicts ('strong' and '<strong>').
$text = preg_replace('/'. $boundary . '[' . WORD_CHARACTER . ']*' .'('. implode('|', $keys) .')'. '[' . WORD_CHARACTER . ']*' . $boundary .'/iu', '<strong>\0</strong>', $text);
//$text = preg_replace('/'. $boundary .'('. implode('|', $keys) .')'. $boundary .'/iu', '<strong>\0</strong>', $text);
  return $text;

Это стоило мне часа времени.


Опубликовано Dimm в пн, 03/03/2008 - 09:25.

Есть система лингвистического поиска для Русского языка под лицензией LGPL под Linux.
http://www.aot.ru/download.php
Может кто-нибуть сможет адаптировать для Drupal?


Опубликовано neochief в ср, 16/04/2008 - 11:26.

Специально для тех, кто дружит с патчами, патч для версии 5.7 последнего кода в атаче.

автору архива: можете включить патч в архив, и написать в install.txt для чего он нужен. Знающим людям это очень упростит жизнь


Опубликовано 1ero в сб, 14/06/2008 - 13:57.

neochief, спасибо большое!
патч снимает все вопросы для версии 5.7

автору модуля также большой респект. работает отлично!


Опубликовано kiev1 в сб, 14/06/2008 - 19:27.

спасибо! то что надо


Опубликовано jsv в ср, 24/12/2008 - 14:04.

а где собственно сам патч? Что-то не вижу никаких аттачей - видимо из-за нового дизайна?


Опубликовано neochief в ср, 24/12/2008 - 14:11.

Недавно сам сюда возвращался и не нашел его. Приготовил новый, но только для шестерки.


Опубликовано fasdalf@fasdalf.ru в чт, 25/12/2008 - 10:58.

Thnx вам огромное! Сам модуль, правда, только для 5 версии есть. Или я ошибаюсь?


Опубликовано neochief в чт, 25/12/2008 - 13:58.

У меня все есть для шестерки. Уж не помню сам ли сделал, иль где взял.


Опубликовано ingumsky@drupal.org в пт, 26/12/2008 - 10:03.

Ух ты! Спасибо Вам большое!


Опубликовано fasdalf@fasdalf.ru в ср, 31/12/2008 - 06:57.

ВахЪ, спасибо, уважаемый!


Опубликовано jsv в вт, 13/01/2009 - 18:46.

"fasdalf@fasdalf.ru" написал(а):

Не работает для 5-й версии, там не хватает файлов. Есть полный модуль, который можно подключить?


Опубликовано h4tr3d в чт, 30/04/2009 - 04:48.

ребят, что-то аттачей для 5й версии друпала не вижу, уже удалили? у кого осталось - поделитесь.


Опубликовано Santi в чт, 17/09/2009 - 08:30.

Прикрепил пропатченный модуль для 5-ки.


Новое на сайте