//Загружаем синонимы
$arr_=file('file_s_simoimami.txt');
$arr=array();
foreach($arr_ as $str)
{
$str=trim($str);
$t1=explode('=',$str);
$master=trim($t1[0]);
if(!isset($t1[1]))continue;
$t2=explode('|',$t1[1]);
if(sizeof($t2)==0)continue;
foreach($t2 as $t)$arr[crc32(strtolower($master))][crc32(strtolower(trim($t)))]=array('word'=>trim($t),'rep'=>0);
}
echo$text='<br />Эта книга призвана ответить на два извечных вопроса: <Какими средствами достигается великолепная запись?> и <Как делается качественный микс?>. И хотя большинство из присутствующих могут сказать, какое качество микса их устроило бы, чаще всего они не знают, как этого достичь, когда они уже находятся в студии.';
echo'<br />';
$text_arr=explode(' ',$text);
$str_='';
foreach($text_arr as $item)
{
$fl=false;
$t=str_replace('.','',str_replace(',','',str_replace('!','',str_replace('?','',str_replace('"','',str_replace('\'','',str_replace('<','',str_replace('>','',str_replace(':','',str_replace(';','',$item))))))))));
if(isset($arr[crc32(strtolower($t))]))
{
foreach($arr[crc32(strtolower($t))] as $k=>$v)if($v['rep']==0)
{
$str_.=str_ireplace($t,$v['word'],$item).' ';
$$v['rep']=1;
$fl=true;
break;
}//if
}//if
if(!$fl)$str_.=$item.' ';
}//foreach
echo $str_;
На вашем примере получаем:
Спасибо за вариант. Но тут к сожеленью он не сработает если база будет мегабайты.
вот еще пример
<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
hello all, I said hi
Возможно лучше будет что то типа
Это не рабочий вариант Я его нашел в сети. Но суть в том что лусше использовать базу sql
Потому как текстовый файл открыть будет проблематично если его вес метров 50.
// строим запрос
$sql = "SELECT * FROM `news_synonyms` WHERE `active`='1'";
// делаем запрос к БД
$spisok = main_sql_query("$sql");
while($row_id = mysql_fetch_assoc($slova)){ // перебор слов
// загоняем слово
array_push($words, " " . $row_id['source_word'] . " ");
// заоняем синоним
array_push($synonyms, " " . $row_id['destination_word'] . " ");
seosniks добавил 06.03.2009 в 18:11
Добрый вечер. Снова обращаюсь к знающим хорошо PHP
Значиться перегнал я все синонимы в базу данных.
База получилась 6 мб.
в базе 103731 синонимов
по этому чтоб получить базу нужно как то сделать запрос чтобы скрипт не перебирал всю подряд базу. А искал только то что начинаеться по конкретному слову.
например
если синонимайзер нашел слово
ЯСНОЕ то подставил синоним ВРАЗУМИТЕЛЬНОЕ
Но вот как сделать счтоб мускул мог нормально работать и не выдавал ошибку с нехваткой
памяти.
Я так понимаю что надо искать не по ID а по имени ключевого искомого слова
тоесть ищем в базе ключевое слово которое находится в тексте,который обрабатываем синонимами. И так у нас в переменной
$row["source_word"] нужное слово
меняем его на $row["destination_word"]
в итоге получим то что надо.
Вот только незнаю как искать по тексту.
Подскажите пожалуйста как найти и получить само слово.
сам принцип работы крипта наверное таким должен быть.
1 разбить текст на массив и проверять каждое совпадение, найдя совпадение заменить его на синоним. или может кто может недорого помочь.
extruder: Что-то у вас огромный код получается. Это делается практически в одну строку.
Функция preg_replace имеет параметр, ограничивающий количество операций.
Например, вот как я реализовал генерацию ссылок по ключевым словам.
Таблица почему-то повреждается. Место на сервере не закончилось?
место есть. А вот видать с памятью Проблеммы.
Нужно хостинг менять.
хостера пинайте
А что случилось? Почему хостера? У меня VDS стоит ,
памяти мало?
seosniks так же пример можно в личку?
Всем кто просил в личку,отправил информацию.
База 1 стоит 10$ база 2 стоит 20$
установка базы 1 и скрипта под ключ 20$/ 1 сайт
установка базы 2 и скрипта под ключ 30$/ 1 сайт
установка базы 1 и 2 и скрипта под ключ 30$ 2 са1та
Это актуально будет новичкам. Если сами не сможете все сделать.
Продаю теперь в базе 30 тысяч новостей.
Картинки размещены на хостингах картинок.
Может кто сталкивался с проблеммой.
Авторизуюсь и после этого жму далее мне выдает not select DB
база на месте, скрипт работал раньше. В чем проблемма может быть?
На вашем примере получаем:
Спасибо за вариант. Но тут к сожеленью он не сработает если база будет мегабайты.
вот еще пример
Возможно лучше будет что то типа
Это не рабочий вариант Я его нашел в сети. Но суть в том что лусше использовать базу sql
Потому как текстовый файл открыть будет проблематично если его вес метров 50.
seosniks добавил 06.03.2009 в 18:11
Добрый вечер. Снова обращаюсь к знающим хорошо PHP
Значиться перегнал я все синонимы в базу данных.
База получилась 6 мб.
в базе 103731 синонимов
по этому чтоб получить базу нужно как то сделать запрос чтобы скрипт не перебирал всю подряд базу. А искал только то что начинаеться по конкретному слову.
например
если синонимайзер нашел слово
ЯСНОЕ то подставил синоним ВРАЗУМИТЕЛЬНОЕ
Но вот как сделать счтоб мускул мог нормально работать и не выдавал ошибку с нехваткой
памяти.
Я так понимаю что надо искать не по ID а по имени ключевого искомого слова
тоесть ищем в базе ключевое слово которое находится в тексте,который обрабатываем синонимами. И так у нас в переменной
$row["source_word"] нужное слово
меняем его на $row["destination_word"]
в итоге получим то что надо.
Вот только незнаю как искать по тексту.
Подскажите пожалуйста как найти и получить само слово.
сам принцип работы крипта наверное таким должен быть.
1 разбить текст на массив и проверять каждое совпадение, найдя совпадение заменить его на синоним. или может кто может недорого помочь.
Что-то у вас огромный код получается. Это делается практически в одну строку.
Функция preg_replace имеет параметр, ограничивающий количество операций.
Например, вот как я реализовал генерацию ссылок по ключевым словам.
$content = preg_replace("/\b(".$row[text].")\b/i","<a href=\"".$row."\">\\1</a>",$content,$count);Копайте в эту сторону.
генерация ссылок очень проста я делал ее для сапы, а вот ключевые слова посложнее.
дел минута делается всего лишь циклом и не нужно регскапов достаточно файла ключевых слов и все. Хотя кому как удобнее.
Есть варианты с вот пример самый простой способ который я делал для забивки базы данных ключевыми словами.
а если у вас ссылки из сапы например для каждой страницы то тогда делается 2 файла.самое главное хорошая база синонимов,а лучше словоформ :)
К стати В яндексе можно сделать через XML
там без задержек можно чекать, 1000 запросов в день с одного IP
Щас если дропнется тысяч 30 доменов
то думаю спрос упадет вообще на них.
Имхо набрали они а толку нету от этого.
уж лучше взять 5 букв только осмысленый доменчик а брать g6q.ru к пример смысла не вижу, если только под доры:D
Домен продан. СПасибо.