admak

Рейтинг
130
Регистрация
19.07.2010

Bukvarix, я с Вами полностью согласен и понимаю, что под фильтр может попасть и нужное. для себя я планирую разделить базу на две: основную и дополнительную, т.е. все что попадает под фильтр не удалять, а перемещать в дополнительную базу. нужно еще подумать над исключениями, как Вы правильно написали выше.

по фильтру, я не вдавался в особенности других языков, а написал мелкую утилитку для подсчета количества слов длинной от 2 до 4 символов. она может пригодится для быстрого поиска признаков фильтрации.

<?php


$ff = fopen("EnglishKeywordsExtended.txt_filter2", "r");
if($ff) {
$out = array();
$in = '';
while( !feof($ff) ){
$in .= fread($ff, 10000000);
preg_match('%^(.*[\r\n]+)(.*)$%s', $in, $nn);
$in = @$nn[2];
if( preg_match_all('%\b([a-z]{2,4})\b%is', @$nn[1], $mm) ){
foreach( $mm[1] as $m ){
@$out[$m]++;
}
}
}
fclose($ff);

arsort($out);
foreach( $out as $key=>$d ){
if( $d>20 ){
echo "$key\t$d\n";
}
}
}

утилитка читает файл блоками по 10мег (если памяти мало, то нужно уменьшить этот параметр), результат выводит в STDOUT (лень было в файл писать :) поэтому запускать ее нужно строкой:

php wordcount.php >result.txt

результат будет в таком виде

de      39932486

en 9224777
la 8895811
para 6559805
el 5666458
di 4774974
da 2784597
que 2754323
le 2245602
del 2224840
como 2096231
los 1741199
mi 1593713
es 1583503
las 1577259
em 1457229
les 1370048
il 1319501
du 1306539
un 1236686
con 1216415
te 1119701
si 1034427
tu 1009043

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

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

bay_ebook:
и разница

насколько я помню, не равенство медленно работает.

вспомнил еще рабочий финт ушами с левым джойном :)

SELECT t1.id

FROM table1 t1 left join table2 t2 on (t1.id=t2.id)
WHERE t2.id IS NULL

запрос выдаст id из первой таблицы, которых нет во второй.

переставив таблицы местами можно получить id из второй таблицы, которых нет в первой.

попробуйте так, может и прокатит..


SELECT t1.id FROM table1 t1, table2 t2
WHERE t1.id=t2.id

индексы по полю id должны быть на обоих таблицах.

если не прокатит, то можно тупо и в лоб за несколько итераций, меняя диапазон отбора


SELECT t1.id FROM table1 t1, table2 t2
WHERE t1.id<1000000 and t1.id=t2.id


---------- Добавлено 20.03.2016 в 11:22 ----------

sidorka:
Прямо использовать WHERE id NOT IN не выходит.

эээ... пересечение - это WHERE t1.id=t2.id, в Вашем условии - дополнение (кажись так это называется).

Если кому нужно, то за пару часов набросал фильтр для зачистки от не английских ключевиков

grep -v -E "\b(de|das|wie|des|dar|mit|uhr|las|les|zu|el|en|la|le|il|tu|te|va|vo|du|di|da|mi|ma|et|em|si|cu|ki|um|es|ou|sus|sua|para|eme|cie|que|una|hai|por|esta|frei)\b" EnglishKeywordsExtended.txt >result.txt

даже при таком хаотичном составлении фильтра, подбиралось и анализировалось глазами, результирующий файл полегчал на 2.7 гига.

посмотреть/сохранить отфильтрованное:

grep -E "\b(de|das|wie|des|dar|mit|uhr|las|les|zu|el|en|la|le|il|tu|te|va|vo|du|di|da|mi|ma|et|em|si|cu|ki|um|es|ou|sus|sua|para|eme|cie|que|una|hai|por|esta|frei)\b" EnglishKeywordsExtended.txt >filtred.txt

метод фильтрации - рабочий, можно автоматизировать поиск признаков и создание фильтра на основе подсчета часточности, но это нужно уже писать небольшой код. :)

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

Bukvarix:
Как всегда, если заметите в базе мусор и есть идеи как его отфильтровать алгоритмически - пишите, в следующих апдейтах баз дополнительно почистим.

проще всего отфильтровывать при помощи частоупотребимых не английских слов, например предлогов.

фильтрация только одного предлога убрала 1.2 гига.

grep -v " de " EnglishKeywordsExtended.txt >result.txt

достаточно просто глазами просмотреть файл, чтобы найти дургие признаки для фильтрации, например: das, el, la и т.д.

BBBoris:
Администратор то есть. Он не может понять в чем дело, так как у него все летает на машине и другом хосте (тестовом).

А точно все летает на тестовом? Ваши тестовые тесты с прошлого топика: /ru/forum/comment/14369449

"Ожидания" винды тоже больше тысячи, юникс - 50

BBBoris:
Первое, что я сделал, создал Тикет (Размещено: 2016-03-11 13:22:22). Рекомендации - поменять Win... на Lin... И у се...

Вполне логичный ответ, я пытался Вам донести это в прошлом топике.

Настроенному Linux/Unix хватит и 512 рама, но т.к. тонкими настройками никто заниматься не будет, то возьмите памяти 1 гиг и спите спокойно.

ps: как я понимаю, выбор Windows 2012 у Вас обусловлен только этим единственным пунктом "Администратор то есть".

ну и тоже нормальное явление...: "Он не может понять в чем дело" 😂

при чем тут file_get_contents?

там данные возвращаются яваскриптом через аякс запросы. затем полученная пачка джейсонов(json) отрисовывается яваскриптом.

ps: у тезов есть апи

umercomp:
1. ОС UNIX - Вы уверены, что данную ОС используют реальные пользователи?

Под ОС UNIX - обычно подразумевается *BSD.

Используют.

---------- Добавлено 12.03.2016 в 11:30 ----------

DenisVS:
Это правильно, что выбрали IIS.

А мне как-то дико только для PHP+MySQL ставить Windows, со всеми вытекающими в виде IIS и т.д.

Одно дело когда используется MSSQL или какие-то виндовые прибамбасы и без винды никак, а тут просто пхп+мускул.

AhmaServers:
Сделал тоже самое, прибавило только 50 рублей. Может глюк js какой то?

тыц

недостающие символы

BBBoris:
Наш выбор пока пал на OC Windows server 2012 (IIS, PHP, MySQL, FTP, Rewrite и т.д.), но отклик не устраивает сейчас – 1.09

что подразумвается под откликом?

- установка соединения (без отклика - не будет соединения)

- начло передачи первого байта страницы

- получение страницы (только хтмл)

- полная загрузка страницы

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

из практики: может быть банальное отсутствие индекса сильно тормозить весь сайт. или бывает, что логика "чудо програмиста" делает сотню sql запросов и тщательно обрабатывает их пхп, когда это можно было сделать всего лишь парой sql запросов.

не глядя и в общем случае для веба, я бы отдал предпочтение unix/linux чем win.

- более устойчивое и предсказуемое поведение.

- меньше накладных расходов и соотвественно меньшие требования к железу, да и скорость думаю будет выше.

- лицензия фрии, это тоже полезно.

Всего: 1235