Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимальный алгоритм [mysql,php], нужно сделать парсер синонимов 
:(
    Опции темы
JSawyer
  Дата 27.12.2010, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.10.2010

Репутация: нет
Всего: нет



Ищу оптимальный алгоритм, нужен совет.

Задача: есть mysql база данных слов-синонимов вида:
Код

id,synonym
1 word1|word2
2 word3|word word4|word5
3 word word word6|word7
и т.д.

Берём текст, меняем слова/фразы в тексте на синонимы из базы (естественно если для слова или фразы есть синоним)

Пока что алгоритм такой:
1. делаю select * from base where 1
2. на php разделяю по |
3. в цикле делаю замену слов/фраз из базы в моём тексте

Простой и тормозной способ, знаю  smile 

Предполагаю, что оптимально было бы выполнять поиск и парсинг непосредственно sql запросом и заменять текст уже готовым вариантом.
Как это реализовать?

Или как можно сделать ещё лучше/быстрее?  smile 



Это сообщение отредактировал(а) JSawyer - 27.12.2010, 11:43
PM MAIL   Вверх
overmet
Дата 27.12.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 15.8.2009
Где: Gomel

Репутация: -2
Всего: -2



Подбор синонимов на PHP в файлах, немного не в тему
Код

$file = $_GET[f];
$file="1.htm";

$filePoinr_w1=fopen("1".$file,"w");
$filePoinr_w2=fopen("2".$file,"w");
$filePoinr_w3=fopen("3".$file,"w");

$array_voc=file("vocabulary.txt");
$ss='';

for ($n=0; $n 

$s=$array_voc[$n];
$p=strpos($s, "|");

$s1=substr($s,0,$p);
$s2=substr($s,$p+1,1000);

$replace1[$s1] = $s2;
$replace2[$s1] = "*b*".$s1."";
$replace3[$s1] = "*b*".$s2.";

}

echo " 

\n”;

$array1=file($file);
for ($n=0; $n $str=$array1[$n];

$new_str = strtr($str, $replace1);
fwrite($filePoinr_w1,$new_str."\n");

$new_str = strtr($str, $replace2);
fwrite($filePoinr_w2,$new_str."\n");

$new_str = strtr($str, $replace3);
fwrite($filePoinr_w3,$new_str."\n");

}

fclose($filePoinr_w1);
fclose($filePoinr_w2);
fclose($filePoinr_w3);



Это сообщение отредактировал(а) overmet - 27.12.2010, 15:20
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
JSawyer
Дата 28.12.2010, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.10.2010

Репутация: нет
Всего: нет



overmet

спасибо за пример, но это имхо не совсем то


неужели никто не посоветует?
PM MAIL   Вверх
Majesty
Дата 28.12.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

Репутация: нет
Всего: нет



Цитата(JSawyer @  27.12.2010,  11:42 Найти цитируемый пост)
в цикле делаю замену слов/фраз из базы в моём тексте
можно передать preg_replace/str_replace массив слов - тогда избавимся от одного цикла. остальное всё-таки придётся производить в цикле (разбор запроса и формирование массива слов) - но в одном. если слов не сильно много, то может работать достаточно быстро. ну и да, можно потом сбросить сериализованный массив в файл, чтобы в будущем обойтись без sql-запроса и формирования массива.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.