|
|
|
|
|
для: Port_Artur1
(06.06.2008 в 10:54)
| | Спасибо всё устраивает, так как упростил в другом месте, а в этом теперь быстрее звука! | |
|
|
|
|
|
|
|
для: Port_Artur1
(05.06.2008 в 16:22)
| | Всё работает,
но может можно что-то подправить в коде что-бы работало быстрее
а то иногда не укладывается в 30 секунд,
а надо бы побыстрее. | |
|
|
|
|
|
|
|
для: olejek
(05.06.2008 в 15:34)
| | Перед последним сообщением также использовал эту функцию, но база отказывалась создаваться почему не знаю.
А сейчас всё нормально работает.
Щас займусь дальнейшей доработкой идеи.
Огромное Вам спасибо за помощь! | |
|
|
|
|
|
|
|
для: Port_Artur1
(05.06.2008 в 15:29)
| | Используйте функцию trim() | |
|
|
|
|
|
|
|
для: 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() );
}
|
Как избавиться от лишних символов при создании базы? | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: 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 != 0 )
{
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)
|
Хотя и ошибок не выдаёт! | |
|
|
|
|
|
|
|
для: olejek
(05.06.2008 в 12:04)
| | ! | |
|
|
|
|
|
|
|
для: Port_Artur1
(05.06.2008 в 11:36)
| | смотря как у вас база создана... полнотекстовым поиском можно проверить наличие части слова в слове.... | |
|
|
|
|
|
|
|
для: 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>";
}
}?>
|
| |
|
|
|
|