![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| artfabrique |
|
|||
![]() Доктор Дизайн ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 5.2.2006 Где: СПб Репутация: нет Всего: 2 |
Народ! подскажите как работать в этой связке и что нужно для этого
У меня есть SQL дамп окончаний слов ispell я его импортнул в мою ДБ, а что дальше то? Прикрепляю дамп Это сообщение отредактировал(а) artfabrique - 1.10.2006, 09:38 Присоединённый файл ( Кол-во скачиваний: 10 )
paradigms_ru.rar 119,62 Kb--------------------
Я спасу мир! © ЙУХ 0000г. |
|||
|
||||
| Eugene_Bond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
дальше есть два пути:
1. все текстовые материалы дублировать в нормальной форме. при поиске запрос приводить в нормальную же форму и искать. логику оттачивать прийдется самому. неисключены двумысленности. например: "мама мыла раму" даст 4 слова в нормальной форме -- "мама", "мыть" и "мыло", "рама" 2. поисковый запрос приводить к нормальной форме, потом строить все возможные словоформы и искать по ним. то есть при поиске по слову "пипетка" (нормальная форма) искать надо будет по словам "пипетка", "пипетки", "пипетку" и т.п. |
|||
|
||||
| artfabrique |
|
|||
![]() Доктор Дизайн ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 5.2.2006 Где: СПб Репутация: нет Всего: 2 |
ХАХАХАХАХАХАХАХХАХАХАХАХАХХА
Дак это и ежу понятно, что такой порядок! я же про ISPELL говорю! как его подключить чтобы корень слова выделить и как им пользоватся! Это все рассказывалось, как я понимаю в журнале PHPH Inside #7!!!!! если есть у кого нить поделитесь а????? Это сообщение отредактировал(а) artfabrique - 1.10.2006, 17:34 --------------------
Я спасу мир! © ЙУХ 0000г. |
|||
|
||||
| Eugene_Bond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
artfabrique, тут есть: http://www.phpclub.ru/detail/magazine/2004/10/
но: 1. материалы в журнале несколько урезаны по сравнению с исходными докладами конференции 2. алгоритм приведения форм тривиален по своей сути 3. решение описанное в докладе сильно упрощено и рессурсоемоко сразу могу сказать что с точки зрения производительности выгоднее делать перебор аффиксов в цикле, чем перекладывать эту задачу на MySQL (проверено эксперементально). Хотя, скорее всего, использовать хранимые процедуры MySQL5 или PostgreSQL будет выгодно. |
|||
|
||||
| Eugene_Bond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
||||
|
||||
| artfabrique |
|
|||
![]() Доктор Дизайн ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 5.2.2006 Где: СПб Репутация: нет Всего: 2 |
ага! встроеные процедуры решают. ну по крайней мере в оракле(да и она вообще в разы спокойней себя чувствует в больших обьемах инфы)
я с процедурами в мускуле 5-м токо-токо начал разбираться... хостинги его не держат нифига пока что. Так что буду циклом фигачить. --------------------
Я спасу мир! © ЙУХ 0000г. |
|||
|
||||
| artfabrique |
|
|||
![]() Доктор Дизайн ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 5.2.2006 Где: СПб Репутация: нет Всего: 2 |
Мда... не хилая статейка.
Вроде все подробно, но многое важное действительно опущено. Мнебы теперь ещё найти уже сконвертированные в таблички мускуля все эти окончания и слова..... И интересно есть ли уже какие нить готовые классы для работы сними... наверняка есть же... может кто знает гже это достать всё можно?? я пока что нарыл только табличку мускуля с окончаниями. Итак! как я понял действия такие: 1) Бью статьи (например) на слова, ставя тэги какое слово из какой статьи 2) Создаю в базе табличку search_object_уникальный_id_поискового_запроса и пишу туда этои статьи по слову на ряд. 3) Бью на слова поисковый запрос 4) получаю начальные формы каждого из слов 5) Выполняю ах@#$но грамоздкий запрос к мускулю(после которого он кашляет кровью и молит о пощаде) для поиска слов с учетом морфологии слов поисковой фразы по таблице search_object_уникальный_id_поискового_запроса с сортировкой по релевантности. 6) фетчу резалт 7) Удаляю нах временные таблицы. 8) Ну получил я массив с найденными словами и тегами на статьи из бд. А как теперь мне получить куски текста окружающие найденные слова и выделить сами найденные слова???????????? ИЛИ меджу 4-м и 5-м пунктом ещё один нужен - записать в отделную таблицу все начальные формы слов поискового запроса. Нужно это или нет? --------------------
Я спасу мир! © ЙУХ 0000г. |
|||
|
||||
| artfabrique |
|
|||
![]() Доктор Дизайн ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 5.2.2006 Где: СПб Репутация: нет Всего: 2 |
--------------------
Я спасу мир! © ЙУХ 0000г. |
|||
|
||||
| Eugene_Bond |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
1. поля прямо "как есть" в словаре так в таблицу и ложатся. типа:
слова еще проще. 2. как я писал выше -- выгоднее считать все суффиксы в массив и гонять цикл регулярок программно, чем грузить этим мускуль. так что их можно (и скорее всего нужно) хранить в файле. сам в файле не храню -- это многолетний программный рудимент, который скорее всего буду исправлять при случае.
Ну а как же "спортивный программерский интерес"? Ведь ничего невероятно сложного в алгоритме нет. Зато использование чужого, пусть даже рабочего решения, ИМХО, внесет в код лишний дисбалланс и дизорганизацию (кроме стандартизированых вариантов типа PEAR).
Между первым и вторым пунтками можно привести слова в нормальные формы. Кстати, вполне удовлетворительных результатов поиска (причем с меньшей кровью) можно добиться "индексируя" исходный текст путем дублирования его же в виде текста состоящего из нормальных форм слов и полнотекстового поиска (приведя поисковый запрос к нормальным же формам). |
||||||||
|
|||||||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Я сделал так: взял базу суффиксов и словарик, и сгенерировал базу вида:
Слово,Искомое слово Слово2,Искомое слово2 и так далее. потом все вогнал в базу, лишь в том отличии, что вторым параметром указал id первого слова. Но база сама по себе окажется огроменной (позже скажу в МБ), текстовый же файл занимает 55 мб. (база должна быть меньше). Нужно придумать оптимальный алгоритм хранения и поиска искомого слова, будут идеи? (Сам пока думаю). |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
алгоритм хранения?
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Vaulter,
Ну ссоный писал, что поделать. Суть то понял. А вообще оффтоп. |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Сейчас у меня есть 2 скрипта на Perl
1) Генеририрует словоформы 2) Добавляет слова в базу (add_word.pl из risearch.org/rumpr) Сейчас пытаюсь совместить их оба, что бы можно было добавлять спокойно свои слова в "пакет" rumor. а она работает довольно шустро. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |