Добрый день!
Разработка ведется на PHP.
Требования: Curl, Proxy, PHP Simple HTML DOM Parser
Задача: сгенерировать всевозможные варианты смешивания слов по заданному алгоритму, а затем определить оптимальный порядок следования слов в конечной фразе путем использования коллекци документов Google.
1 этап (готов на 90%)
На входе многомерный массив данных:
$s = array(
1 => array (1 => "в дом", 2 => "в квартиру", 3 => "для офиса"),
2 => array (1 => "противовзломные"),
3 => array (1 => "надежные"),
n => ...
n = 36;
Дополнительный массив:
$arPreA =
array(
array('двери'),
array('двери', 'входные'),
array('двери', 'стальные'),
array('двери', 'металлические'),
array('двери', 'железные'))
Задача состоит в
1) генерации txt файлов, содержащие в себе набор строк, полученных путем смешивания элементов массива с добавлением массива вводных слов (двери, входные, стальные, металлические, железные).
Пример содержания файла на выходе:
противовзломные тамбурные двери
тамбурные противовзломные двери
двери входные противовзломные тамбурные
входные двери противовзломные тамбурные
двери противовзломные входные тамбурные
Что уже сделано:
Имеется рабочий пример, написанный на php который генерирует и заливает на FTP txt файлы вида result-00.txt, result-01.txt, каждый из которых содержит набор строк, полученных путем скрещивания одной пары фильтров, с учетом всевозможных вариантов порядка следования слов в конечной фразе, а так же с учетом дополнительноо массива данных.
При n<14 все работает по строго заданному алгоритму.
16 строка скрипта $number=14; //сколько групп берем в работу
Вся суть в том, что для получения всевозможных вариантов необходимо задействовать все 36 групп исходного массива, иначе выборка получится неполной.
При n=13 получается Скрещенных фильтров всего:49151
Двойных: 146
Каждый файл (каждый из 146) содержит 102 строки вариации 1 скрещивания
Проблема: в случае, если n=>14, скрипт перестает работать. Возникает сообщение о том, что память переполнена. При n=14 возникает сообщение о переполнении в памяти строка 159
if ($sp[$f][$i]!==0)
{
$j[$f][$i]=1;
}
Участок кода отвечает за подсчет длины фильтра
Необходимо переписать логику. В конечном счете должна быть возможность задать длину конечного фильтра (как это сделано в строке 167):
if ($countlen==2) //Обрабатываем фильтры с определенной длиной
{
Пример рабочего php файла по ссылке:
drive.google.com/file/d/0... Принцип работы генератора фраз в документации по ссылке:
drive.google.com/open?id=... 2 этап (разработка с 0)
Задача состоит в
Парсинге выдачи гугл prntscr.com/badp22 Интересует число кол-во результатов
Обрабатываем каждый файл, в файле проверяем каждую строку, сравниваем кол-во ответов Google и на выходе отдаем строку с наибольшим кол-вом результатов
Продолжаем работу со следующим файлом.
На выходе n оптимальных запросов, где n количество скрещенных фильтров заданной длинны.
При разработке возможно использование proxy, curl