фронт енд
личный кабинет
админка
отчеты
настройка сервера
итд
Есть такое. Просто в данной задаче, я и швец и жнец, что называется. Поэтому и интересуюсь😊
Хочется уже что то свое напилить. Тем более, мне это ничего не стоит, кроме потраченного времени. Причем, время тратится в любом случае с пользой - решение всяких маленьких и больших задач отлично разминает мозг и дает много новых знаний.
Спасибо за развернутый ответ.
Несколько возражений.
Не вижу никаких преимуществ ни какого php фреймворка относительно python+aiohttp. Повторюсь, я почти 20 лет на пхп). Кроме может, кол-ва разработчиков на рынке. В плане инструмента для создания продукта - только плюсы. Один pymorphy2 чего стоит.
import pymorphy2 .... self.morph = pymorphy2.MorphAnalyzer() .... p = self.morph.parse(ww)[0].normal_form
3 строчки и текст объявления лематизирован. Еще немного кода, и сразу ясно про похожие, категории, ключевики т.п. имеющие отношение к этому объявлению. В т.ч. пресловутое LSI (gensim тоже используется). Отсюда - более менее адекватный обвес объявления, что дает максимально полный ответ пользователю. В рамках возможного..
Выше пример приводил, про "достопримечательности праги". Согласитесь, показать, что там есть на сайте связанное с 'град_пражский', 'площадь_староместский', 'карлов_мост', 'город_старый' и т.д., на объявлении про достопримечательности праги уместно. И никакой Ларавел не поможет сделать такой анализ, практически на лету, с лучшим качеством.
В целом, переход с пхп на питон процентов на 40% снизил кол-во кода, при этом функционала меньше не стало, а наоборот - прилично больше..
Считаю гео важнейшей компонентой. Начиная от региональной выдачи по гео-запросам, до удобства пользователей. Я как правило, пойду туда где ближе. И если сервис дает мне такую возможность, это большой плюс.
По большому счету главная задача - трафик. Поэтому и заморочился с гео, н-граммами, связанными темами и т.д. Посмотрим, что получится😉
Тоже хочу попробовать. Только без миллионов😎
Как думаете, взлетит с учетом нижеследующего? Очень интересен ваш опыт.
Получилось?
Для снижения стоимости - лучшего варианта чем питон не нашел. Не сразу. Почти 20 лет на php. Трудно было отказаться. Да и джанга со фласками всегда уступали на одинаковых задачах в скорости. Пока не поюзал aiohttp.
Но, готовая морфология, lsi, lda, tf-idf. aiohttp удерживающий 100+ рпс на дешевом впс 1гиг, с 5-7 запросами (для сборки категории/объявления) к монге 1кк объяв в 2000+ категориях (в тестах ab -n 3000 -c 200 http:***). Как минимум не хуже аналогичных тестов на php74
Сова на глобус.
А зачем? Семантика сегодня одна, завтра другая.
Например, положили вам объявление " достопримечательности праги". Никто не мешает расширить семантику, сделать обвес и т.д. автоматически. По данным Яндекс_xml, букварикс/мутаген, текста объявления и gensim
Сам себя процитирую,
timo-71 #:
запрос "достопримечательности праги" для сравнения с этим
Интересный результат получается, если сматчить биграммы полученные из топ20 выдачи, с биграммами из
запросов
$ /home/web/py/w2v/key.py
['град_пражский',
'площадь_староместский',
'карлов_мост',
'город_старый',
'святой_собор',
'вацлавская_площадь',
'тынский_храм',
'еврейский_квартал',
'дом_танцующий',
'башня_пороховой',
'место_стар',
'исторический_центр',
'маленький_страна',
'берег_левый',
'малый_страна',
'площадь_республика',
'место_нова',
'камп_остров',
'интересный_место',
'билет_входной',
'вар_карлов',
'место_стара',
'метро_станция',
'гора_кутна',
'метро_схема',
'отзыв_турист',
'виноград_район',
'проезд_схема',
'интересный_факт',
'петь_фонтан']
Про статику на другом железе сказано. Еще, с точки зрения кеширования. если этот /css/style.css используется, ну например на сайте с гео
И таких, ну например, 2855 субдоменов. Попав в кеш браузера на одном из них, на других, браузером будет использована версия из кеша.
Боты - один и тот же логотип, не говоря о других файлах, на 2855 субдоменах, очевидно некую нагрузку создаст. Ну и т.д. и т.п.
Издержки представления о роутинге разработчиков сайтов на кмс/фреймворках (просто пример, справедливо и для остальных):
Route::get(' catalog/{category}', function ($catId) {});Route::get('catalog/{category}/{item}', function ($catId, $itemId) {});
сделали, а
Route::get('catalog', function () {});
забиыли.
С технической стороны перекликается с https://searchengines.guru/ru/forum/1029521
Там есть нюанс. Ну, если,
а все вокруг увешано абсолютными аналогами.
Конечно, если сделать,
Автокран, Телевизор, Тапочки.
Будет все как вы сказали.😂
Получилось еще одно доказательство, то что ТЗ надо внимательно читать и понятно излагать.
Array( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 ) [1] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 ) [2] => Array ( [0] => 0 [1] => 1 [2] => 0 [3] => 0 [4] => 1 [5] => 0 ))
<?php$oldArray = [ [0,0,0], [0,0,0], [0,1,0], [0,0,0], [0,0,0], [0,0,0], [0,1,0], [0,1,0], [0,0,0], [1,1,1],];$new_a = [];$l = count($oldArray);$tmp0 = [];$tmp1 = [];function _a(array &$a, array &$b, array $c){ $aa = []; foreach($c as $v){ $aa = array_merge($aa, $b[$v]); } $a[] = $aa;}for($i=0;$i<$l;$i++){ if(!in_array(1, $oldArray[$i])) { if(count($tmp1)>1) { _a($new_a, $oldArray, $tmp1); } array_push($tmp0, $i); $tmp1 = []; } else { if(count($tmp0)>1) { _a($new_a, $oldArray, $tmp0); } array_push($tmp1, $i); $tmp0 = []; }}print_r($new_a);
Если опять не так, то умываю руки. Пардон, что читаю по диагонали, сначала между делом. Но, есть и плюс - разные варианты разобрали.
Вы можете для проверки, лошадью сходить.
function _a(array &$a, array &$b, array $c){ foreach($c as $v){ $a[$v] = $b[$v]; } }
Увидеть индексы исходного, которые добавились
В моем случае оно дало:
Array ( [0] => Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [1] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [3] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [4] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [5] => Array ( [0] => 0 [1] => 0 [2] => 0 ) ) [1] => Array ( [6] => Array ( [0] => 0 [1] => 1 [2] => 0 ) [7] => Array ( [0] => 0 [1] => 1 [2] => 0 ) ) )
Нетрудно заметить, добавились для
0 [0,0,0], в [0] 1 [0,0,0], в [0] 2 [0,1,0], 3 [0,0,0], в [0] 4 [0,0,0], в [0] 5 [0,0,0], в [0] 6 [0,1,0], в [1] 7 [0,1,0], в [1] 8 [0,0,0], 9 [1,1,1],
Точно, пора в санаторий.