Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проверить базу на вхождение слова в составное слово

Сообщения:  [1-10]   [11-17] 

 
 автор: Port_Artur1   (06.06.2008 в 13:57)   письмо автору
 
   для: Port_Artur1   (06.06.2008 в 10:54)
 

Спасибо всё устраивает, так как упростил в другом месте, а в этом теперь быстрее звука!

   
 
 автор: Port_Artur1   (06.06.2008 в 10:54)   письмо автору
 
   для: Port_Artur1   (05.06.2008 в 16:22)
 

Всё работает,
но может можно что-то подправить в коде что-бы работало быстрее
а то иногда не укладывается в 30 секунд,
а надо бы побыстрее.

   
 
 автор: Port_Artur1   (05.06.2008 в 16:22)   письмо автору
 
   для: olejek   (05.06.2008 в 15:34)
 

Перед последним сообщением также использовал эту функцию, но база отказывалась создаваться почему не знаю.
А сейчас всё нормально работает.
Щас займусь дальнейшей доработкой идеи.

Огромное Вам спасибо за помощь!

   
 
 автор: olejek   (05.06.2008 в 15:34)   письмо автору
 
   для: Port_Artur1   (05.06.2008 в 15:29)
 

Используйте функцию trim()

   
 
 автор: Port_Artur1   (05.06.2008 в 15:29)   письмо автору
 
   для: olejek   (05.06.2008 в 14:09)
 

нашёл ошибку оказывается длина слов в базе из 4 букв = 5 , видимо в конце или пробел или ещё что то



   $fm=file('file.txt');
    foreach ($fm as $value){

    mysql_query( "INSERT INTO word ( word )
     VALUES ( '$value')" )
             or error( mysql_error() );
 }



Как избавиться от лишних символов при создании базы?

   
 
 автор: olejek   (05.06.2008 в 14:09)   письмо автору
 
   для: Port_Artur1   (05.06.2008 в 13:35)
 

Ну не знаю, не знаю. У меня такой код вывел:
"agr","gro","rod","agro","grod","agrod"-1cagrod

Ищите ошибку в другом месте, может при передаче переменных.

Из справочника MySQL:

expr IN (value,...) 

Returns 1 if expr is equal to any of the values in the IN list, else returns 0. 
If all values are constants, they are evaluated according to the type of expr and sorted. 
The search for the item then is done using a binary search. 
This means IN is very quick if the IN value list consists entirely of constants. 
Otherwise, type conversion takes place according to the rules described in Section 10.2.2,
 “Type Conversion in Expression Evaluation”, but applied to all the arguments. 

mysql> SELECT 2 IN (0,3,5,7);
        -> 0
mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
        -> 1

   
 
 автор: Port_Artur1   (05.06.2008 в 13:35)   письмо автору
 
   для: KPETuH   (05.06.2008 в 12:13)
 

olejek спасибо за пример скорость повысилась значительно хотя хочется ещё быстрее, но к сожалению результат такой

вводим - agrod

получаем что оно может состоять из двух слов - "agro","grod"

результат выборки из базы - 0 совпадений

А базе слво "agro" есть - 6-я запись из нескольких тысяч.

 <?

dbConnect
();

                      
//    echo  $prefix;
                
$min_count 4;    //минимальное количество символов в слове
                
$max_count strlen($prefix)+1;    //максиальное количество символов в слове

                
if ($max_count $min_count)
                    {
                    
//составляем массив всех возможных слов, которые могут встериться в исходном слове
                    
for ($count $min_count$count $max_count$count++)
                        for (
$i=0$i<strlen($prefix)-$count+1$i++)
                            
$part_array[] = '"'.substr($prefix$i$count).'"';

                    
$part_string implode(','$part_array);

                    echo (
$part_string."-");//получится
                    //"agro","grod" 
                    //  echo ($part_string);
                    
$query mysql_query ("SELECT word FROM word WHERE word in ($part_string)") or error (mysql_error());
                  
//  echo $query;
                    //  $result = mysql_query( "SELECT word FROM word" ) or error( mysql_error() );
                     //  $totalMsg = mysql_num_rows( $result );
                     //  echo ($totalMsg."c");



                      
$totalMsg mysql_num_rows($query);
                    echo (
$totalMsg."c");
                  
//     $i=1;
                        
if( $totalMsg != )
                      {
                       while (
$qr mysql_fetch_array($query))
                        {
                        
$otvet str_replace($qr['word'], "<b>".$qr['word']."</b>",$prefix);
                        echo 
"<tt>$otvet<br/>\r\n</tt>";
                        }
                      }
                   }

?>


Что то нигде не могу найти пример с этим оборотом

WHERE word in ($part_string)


Хотя и ошибок не выдаёт!

   
 
 автор: Port_Artur1   (05.06.2008 в 12:56)   письмо автору
 
   для: olejek   (05.06.2008 в 12:04)
 

!

   
 
 автор: KPETuH   (05.06.2008 в 12:13)   письмо автору
 
   для: Port_Artur1   (05.06.2008 в 11:36)
 

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

   
 
 автор: olejek   (05.06.2008 в 12:04)   письмо автору
 
   для: Port_Artur1   (05.06.2008 в 11:36)
 

Насчет быстро не знаю, проверьте!

<?$string "парламент";
$min_count 3;    //минимальное количество символов в слове
$max_count strlen($string)+1;    //максиальное количество символов в слове

if ($max_count $min_count)
    {
    
//составляем массив всех возможных слов, которые могут встериться в исходном слове
    
for ($count $min_count$count $max_count$count++)
        for (
$i=0$i<strlen($string)-$count+1$i++)
            
$part_array[] = '"'.substr($string$i$count).'"';    
    
    
$part_string implode(','$part_array);
    
//получится
    //"пар","арл","рла","лам","аме","мен","ент","парл","арла","рлам","ламе","амен","мент","парла",
    //"арлам","рламе","ламен","амент","парлам","арламе","рламен","ламент","парламе","арламен",
    //"рламент","парламен","арламент","парламент"

    
$query mysql_query ("select word from word where word in ($part_string)") or die (mysql_error());
    while (
$qr mysql_fetch_array($query))
        {
        
$otvet str_replace($qr[0], "<b>".$qr[0]."</b>",$string);
        echo 
$otvet."<br>";
        }
    }
?>

   

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования