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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слово в предложении, В каких предложениях встречается слово 
:(
    Опции темы
g27
Дата 10.3.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте, есть текст, большой, 600 страниц скажем не придел. Так вот я этот текст сохраняю в базу, разбиваю на предложения и слова и тоже сохраняю. Дальше мне требуется вывести список слов. При нажатии на слово должен вывести список предложений в которых встречается это слово. Так вот как лучше это реализовать? Создать отдельную таблицу примерно такого вида id | id_word | id_sentence и записывать какие слова в каком предложении или вытаскивать предложения путём использования в mysql запросе like %word% ? 
PM MAIL Skype   Вверх
bashkos
Дата 10.3.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дело твое конечно, но на мой взгляд все таки разбивку на предложения и слова, а также поиск предложений с данным словом, было бы лучше возложить на плечи php и не хранить этот мусор в базе.
И, кстати, like %word% найдет даже предложения со словами, которые включают word, но словом word не являются. К примеру ищем все предложения со словом ключ, а в результате будет учитано и предложение со словом заключенный.
PM MAIL   Вверх
wOOx
Дата 11.3.2010, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как то так без бдsmile
Код

<?
$fp = fopen("text.txt", "r"); // Открываем файл в режиме чтения
if ($fp){
    while (!feof($fp)){
        $mytext = fgets($fp);
    }
}
else echo "Ошибка при открытии файла";
fclose($fp);

class separator{
    var $sent;
    function getSent($text){
        array($p);
        if (strpos($text,'.')!='') $p[0]=strpos($text,'.');
        if (strpos($text,'!')!='') $p[1]=strpos($text,'!');
        if (strpos($text,'?')!='') $p[2]=strpos($text,'?');
        $pmin=min($p);
        if ($pmin=='') return;
        else {
            $this->sent[]=trim(substr($text,0,$pmin+1));
            $text=trim(substr($text,$pmin+1));
            $this->getSent($text);
        }
    }
}

$sep=new separator;
$sep->getSent($mytext);

$all=array_unique(explode(' ', $mytext));
$mist=array('.', ',', '!', '?', ' ');
for ($i=0; $i<count($all); $i++){
    for ($c=0; $c<count($mist); $c++){
        $all[$i]=str_replace($mist[$c],'',$all[$i]);
    }
}
for ($i=0; $i<count($all); $i++){
    if (strlen($all[$i])>1) $words[]=$all[$i];
}
echo '<p><table cellpadding="0" cellspacing="0" width="100%"><tr valign="top"><td width="300">';
for ($i=0; $i<count($words); $i++){
    if (!empty($words[$i])) echo '<a href="?find='.$words[$i].'">'.$words[$i].'</a><br/>';
}
echo '</td><td width="50px"></td><td>';
if (!empty($_GET['find'])){
    for ($i=0; $i<count($sep->sent); $i++){
        if (strpos($sep->sent[$i], $_GET['find'])!==false) echo '<p>'.str_replace($_GET['find'], '<b>'.$_GET['find'].'</b>', $sep->sent[$i]);
    }
}
echo '</td></tr></table>';
?>

и конечно регуляными выражениями надо пользоваться :(

Это сообщение отредактировал(а) wOOx - 11.3.2010, 04:05
PM MAIL   Вверх
g27
Дата 11.3.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



сохранять текст и доставать всё это из него средствами пхп по требованию слишком долго будет наверное, проще базу дёргать. К тому же ещё и статистика должна быть, сколько каких слов и т.д.
а допустим в like %' word '% как-нить так нельзя? Ну типа что пробелы есть по бокам, да и вроде там есть свои регулярки, надо будет поэкспериментировать.
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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